#!/usr/bin/env pytest # -*- coding: utf-8 -*- ############################################################################### # $Id$ # # Project: GDAL/OGR Test Suite # Purpose: Test read functionality for OGR EDIGEO driver. # Author: Even Rouault # ############################################################################### # Copyright (c) 2011, Even Rouault # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. ############################################################################### import os import gdaltest import ogrtest import pytest from osgeo import ogr pytestmark = pytest.mark.require_driver("Edigeo") ############################################################################### def test_ogr_edigeo_1(): filelist = [ "E000AB01.THF", "EDAB01S1.VEC", "EDAB01SE.DIC", "EDAB01SE.GEN", "EDAB01SE.GEO", "EDAB01SE.QAL", "EDAB01SE.SCD", "EDAB01T1.VEC", "EDAB01T2.VEC", "EDAB01T3.VEC", ] # base_url = 'http://svn.geotools.org/trunk/modules/unsupported/edigeo/src/test/resources/org/geotools/data/edigeo/test-data/' base_url = "https://raw.githubusercontent.com/geotools/geotools/affa340d16681f1bb78673d23fb38a6c1eb2b38a/modules/unsupported/edigeo/src/test/resources/org/geotools/data/edigeo/test-data/" for filename in filelist: gdaltest.download_or_skip(base_url + filename, filename) try: for filename in filelist: os.stat("tmp/cache/" + filename) except OSError: pytest.skip() ds = ogr.Open("tmp/cache/E000AB01.THF") assert ds.GetLayerCount() == 24 layers = [ ("BATIMENT_id", ogr.wkbPolygon, 107), ("BORNE_id", ogr.wkbPoint, 5), ("COMMUNE_id", ogr.wkbPolygon, 1), ("LIEUDIT_id", ogr.wkbPolygon, 3), ("NUMVOIE_id", ogr.wkbPoint, 43), ("PARCELLE_id", ogr.wkbPolygon, 155), ("SECTION_id", ogr.wkbPolygon, 1), ("SUBDFISC_id", ogr.wkbPolygon, 1), ("SUBDSECT_id", ogr.wkbPolygon, 1), ("SYMBLIM_id", ogr.wkbPoint, 29), ("TLINE_id", ogr.wkbLineString, 134), ("TPOINT_id", ogr.wkbPoint, 1), ("TRONFLUV_id", ogr.wkbPolygon, 3), ("TRONROUTE_id", ogr.wkbPolygon, 1), ("TSURF_id", ogr.wkbPolygon, 3), ("ZONCOMMUNI_id", ogr.wkbLineString, 15), ("ID_S_OBJ_Z_1_2_2", ogr.wkbPoint, 248), ] for l in layers: lyr = ds.GetLayerByName(l[0]) assert lyr.GetLayerDefn().GetGeomType() == l[1] assert lyr.GetFeatureCount() == l[2] if l[1] != ogr.wkbNone: assert ( lyr.GetSpatialRef().ExportToWkt().find("Lambert_Conformal_Conic_1SP") != -1 ) lyr = ds.GetLayerByName("BORNE_id") feat = lyr.GetNextFeature() if ogrtest.check_feature_geometry(feat, "POINT (877171.28 72489.22)"): feat.DumpReadable() pytest.fail() lyr = ds.GetLayerByName("BATIMENT_id") feat = lyr.GetNextFeature() if ogrtest.check_feature_geometry( feat, "POLYGON ((877206.16 71888.82,877193.14 71865.51,877202.95 71860.07,877215.83 71883.5,877206.16 71888.82))", ): feat.DumpReadable() pytest.fail() lyr = ds.GetLayerByName("ZONCOMMUNI_id") feat = lyr.GetNextFeature() if ogrtest.check_feature_geometry( feat, "LINESTRING (877929.8 71656.39,877922.38 71663.72,877911.48 71669.51,877884.23 71675.64,877783.07 71694.04,877716.31 71706.98,877707.45 71709.71,877702.0 71713.79,877696.89 71719.58,877671.69 71761.82,877607.99 71865.03,877545.32 71959.04,877499.22 72026.82)", ): feat.DumpReadable() pytest.fail() ds.Destroy()