gdal/autotest/ogr/ogr_sxf.py

148 строки
4.3 KiB
Python
Исполняемый файл

#!/usr/bin/env pytest
# -*- coding: utf-8 -*-
###############################################################################
# $Id: ogr_sxf.py 26513 2013-10-02 11:59:50Z bishop $
#
# Project: GDAL/OGR Test Suite
# Purpose: Test OGR SXF driver functionality.
# Author: Dmitry Baryshnikov <polimax@mail.ru>
#
###############################################################################
# Copyright (c) 2013, NextGIS
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
import shutil
import sys
import gdaltest
import pytest
from osgeo import gdal, ogr
pytestmark = pytest.mark.require_driver("SXF")
###############################################################################
# Open SXF datasource.
def test_ogr_sxf_1():
gdaltest.sxf_ds = None
with gdaltest.error_handler():
# Expect Warning 0 and Warning 6.
gdaltest.sxf_ds = ogr.Open("data/sxf/100_test.sxf")
if gdaltest.sxf_ds is not None:
return
pytest.fail()
###############################################################################
# Run test_ogrsf
def test_ogr_sxf_2():
import test_cli_utilities
if test_cli_utilities.get_test_ogrsf_path() is None:
pytest.skip()
ret = gdaltest.runexternal(
test_cli_utilities.get_test_ogrsf_path() + " data/sxf/100_test.sxf"
)
assert ret.find("INFO") != -1 and ret.find("ERROR") == -1
###############################################################################
# Open SXF datasource with custom RSC file.
def test_ogr_sxf_3():
lyr_names = ["SYSTEM", "Not_Classified"]
sxf_name = "tmp/test_ogr_sxf_3.sxf"
rsc_name = "tmp/test_ogr_sxf_3.rsc"
fake_rsc = open(rsc_name, "w")
fake_rsc.close()
shutil.copy("data/sxf/100_test.sxf", sxf_name)
sxf_ds = gdal.OpenEx(
sxf_name, gdal.OF_VECTOR, open_options=["SXF_RSC_FILENAME=" + rsc_name]
)
assert sxf_ds is not None
for layer_n in range(sxf_ds.GetLayerCount()):
lyr = sxf_ds.GetLayer(layer_n)
assert lyr_names[layer_n] == lyr.GetName()
###############################################################################
# Open SXF datasource with layers fullname.
def test_ogr_sxf_4(capsys):
lyr_names = [
"СИСТЕМНЫЙ",
"ВОДНЫЕ ОБЪЕКТЫ",
"НАСЕЛЕННЫЕ ПУНКТЫ",
"ИНФРАСТРУКТУРА",
"ЗЕМЛЕПОЛЬЗОВАНИЕ",
"РЕЛЬЕФ СУШИ",
"ГИДРОГРАФИЯ (РЕЛЬЕФ)",
"МАТЕМАТИЧЕСКАЯ ОСНОВА",
"Not_Classified",
]
sxf_name = "data/sxf/100_test.sxf"
sxf_ds = gdal.OpenEx(
sxf_name, gdal.OF_VECTOR, open_options=["SXF_LAYER_FULLNAME=YES"]
)
assert sxf_ds is not None
assert sxf_ds.GetLayerCount() == len(lyr_names)
if sys.platform != "win32":
with capsys.disabled():
print("Expected:")
for n in lyr_names:
print(n)
print("In fact:")
for layer_n in range(sxf_ds.GetLayerCount()):
lyr = sxf_ds.GetLayer(layer_n)
print(lyr.GetName())
for layer_n in range(sxf_ds.GetLayerCount()):
lyr = sxf_ds.GetLayer(layer_n)
if lyr.TestCapability(ogr.OLCStringsAsUTF8) != 1:
pytest.skip("skipping test: recode is not possible")
assert lyr_names[layer_n] == lyr.GetName()
###############################################################################
#
def test_ogr_sxf_cleanup():
if gdaltest.sxf_ds is None:
pytest.skip()
gdaltest.sxf_ds = None