more geometry tests for ogr plugin
This commit is contained in:
parent
1994b1c25f
commit
f0563fd8f3
2 changed files with 51 additions and 0 deletions
7
tests/data/csv/wkt.vrt
Normal file
7
tests/data/csv/wkt.vrt
Normal file
|
@ -0,0 +1,7 @@
|
|||
<OGRVRTDataSource>
|
||||
<OGRVRTLayer name="wkt">
|
||||
<SrcDataSource relativeToVRT="1">wkt.csv</SrcDataSource>
|
||||
<LayerSRS>WGS84</LayerSRS>
|
||||
<GeometryField encoding="WKT" field="WKT"/>
|
||||
</OGRVRTLayer>
|
||||
</OGRVRTDataSource>
|
|
@ -5,6 +5,11 @@ from nose.tools import eq_,assert_almost_equal,raises
|
|||
from utilities import execution_path, run_all
|
||||
import os, mapnik
|
||||
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
import simplejson as json
|
||||
|
||||
def setup():
|
||||
# All of the paths used are relative, if we run the tests
|
||||
# from another directory we need to chdir()
|
||||
|
@ -108,6 +113,45 @@ if 'ogr' in mapnik.DatasourceCache.plugin_names():
|
|||
# fs = ds.all_features()
|
||||
# eq_(len(fs),1)
|
||||
|
||||
def test_geometry_type():
|
||||
ds = mapnik.Ogr(file='../data/csv/wkt.vrt',layer_by_index=0)
|
||||
e = ds.envelope()
|
||||
assert_almost_equal(e.minx, 1.0, places=1)
|
||||
assert_almost_equal(e.miny, 1.0, places=1)
|
||||
assert_almost_equal(e.maxx, 45.0, places=1)
|
||||
assert_almost_equal(e.maxy, 45.0, places=1)
|
||||
meta = ds.describe()
|
||||
eq_(meta['geometry_type'],mapnik.DataGeometryType.Point)
|
||||
eq_('+proj=longlat' in meta['proj4'],True)
|
||||
fs = ds.featureset()
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'Point', u'coordinates': [30, 10]}, u'type': u'Feature', u'id': 2, u'properties': {u'type': u'point', u'WKT': u' POINT (30 10)'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'LineString', u'coordinates': [[30, 10], [10, 30], [40, 40]]}, u'type': u'Feature', u'id': 3, u'properties': {u'type': u'linestring', u'WKT': u' LINESTRING (30 10, 10 30, 40 40)'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'Polygon', u'coordinates': [[[30, 10], [10, 20], [20, 40], [40, 40], [30, 10]]]}, u'type': u'Feature', u'id': 4, u'properties': {u'type': u'polygon', u'WKT': u' POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'Polygon', u'coordinates': [[[35, 10], [10, 20], [15, 40], [45, 45], [35, 10]], [[20, 30], [35, 35], [30, 20], [20, 30]]]}, u'type': u'Feature', u'id': 5, u'properties': {u'type': u'polygon', u'WKT': u' POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'MultiPoint', u'coordinates': [[10, 40], [40, 30], [20, 20], [30, 10]]}, u'type': u'Feature', u'id': 6, u'properties': {u'type': u'multipoint', u'WKT': u' MULTIPOINT ((10 40), (40 30), (20 20), (30 10))'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'MultiLineString', u'coordinates': [[[10, 10], [20, 20], [10, 40]], [[40, 40], [30, 30], [40, 20], [30, 10]]]}, u'type': u'Feature', u'id': 7, u'properties': {u'type': u'multilinestring', u'WKT': u' MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'MultiPolygon', u'coordinates': [[[[30, 20], [10, 40], [45, 40], [30, 20]]], [[[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]]]}, u'type': u'Feature', u'id': 8, u'properties': {u'type': u'multipolygon', u'WKT': u' MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'MultiPolygon', u'coordinates': [[[[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]]]]}, u'type': u'Feature', u'id': 9, u'properties': {u'type': u'multipolygon', u'WKT': u' 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)))'}})
|
||||
feat = fs.next()
|
||||
actual = json.loads(feat.to_geojson())
|
||||
eq_(actual,{u'geometry': {u'type': u'GeometryCollection', u'geometries': [{u'type': u'Polygon', u'coordinates': [[[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]]]}, {u'type': u'Point', u'coordinates': [2, 3]}, {u'type': u'LineString', u'coordinates': [[2, 3], [3, 4]]}]}, u'type': u'Feature', u'id': 10, u'properties': {u'type': u'collection', u'WKT': u' GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))'}})
|
||||
|
||||
if __name__ == "__main__":
|
||||
setup()
|
||||
exit(run_all(eval(x) for x in dir() if x.startswith("test_")))
|
||||
|
|
Loading…
Add table
Reference in a new issue