129 строки
4.7 KiB
Python
Исполняемый файл
129 строки
4.7 KiB
Python
Исполняемый файл
#!/usr/bin/env pytest
|
|
# -*- coding: utf-8 -*-
|
|
###############################################################################
|
|
# $Id$
|
|
#
|
|
# Project: GDAL/OGR Test Suite
|
|
# Purpose: Test read functionality for OGR EDIGEO driver.
|
|
# Author: Even Rouault <even dot rouault at spatialys.com>
|
|
#
|
|
###############################################################################
|
|
# Copyright (c) 2011, Even Rouault <even dot rouault at spatialys.com>
|
|
#
|
|
# 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()
|