1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#!/usr/bin/env python
import os
from nose.tools import eq_
from nose.plugins.skip import SkipTest
import mapnik
from .utilities import execution_path, run_all
try:
import itertools.izip as zip
except ImportError:
pass
def setup():
# All of the paths used are relative, if we run the tests
# from another directory we need to chdir()
os.chdir(execution_path('.'))
# TODO - fix truncation in shapefile...
polys = ["POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))",
"POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))",
"MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))"
"MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20)))"
]
plugins = mapnik.DatasourceCache.plugin_names()
if 'shape' in plugins and 'ogr' in plugins:
def ensure_geometries_are_interpreted_equivalently(filename):
if not os.path.exists(filename):
raise SkipTest
ds1 = mapnik.Ogr(file=filename, layer_by_index=0)
ds2 = mapnik.Shapefile(file=filename)
fs1 = ds1.featureset()
fs2 = ds2.featureset()
count = 0
for feat1, feat2 in zip(fs1, fs2):
count += 1
eq_(feat1.attributes, feat2.attributes)
# TODO - revisit this: https://github.com/mapnik/mapnik/issues/1093
# eq_(feat1.to_geojson(),feat2.to_geojson())
# eq_(feat1.geometries().to_wkt(),feat2.geometries().to_wkt())
# eq_(feat1.geometries().to_wkb(mapnik.wkbByteOrder.NDR),feat2.geometries().to_wkb(mapnik.wkbByteOrder.NDR))
# eq_(feat1.geometries().to_wkb(mapnik.wkbByteOrder.XDR),feat2.geometries().to_wkb(mapnik.wkbByteOrder.XDR))
def test_simple_polys():
ensure_geometries_are_interpreted_equivalently(
'../data/shp/wkt_poly.shp')
if __name__ == "__main__":
setup()
exit(run_all(eval(x) for x in dir() if x.startswith("test_")))
|