我正在将人口普查shapefile导入到django项目中,例如:
from django.contrib.gis.gdal import DataSource
d = DataSource('data/tl_2017_us_state.shp')
文档:https://docs.djangoproject.com/en/1.11/ref/contrib/gis/gdal/#django.contrib.gis.gdal.DataSource
但是似乎源数据具有经度,纬度顺序的坐标,因此例如:
d[0].get_geoms()[0].coords
(((-81.11055999999999, 39.472046),
(-81.11039799999999, 39.472336),
(-81.109926, 39.473163),
(-81.10980699999999, 39.473371),
(-81.109729, 39.473518999999996),
...),)
当我要反向显示它们时,例如(39,-81)
第一个问题是,为什么它们按这种顺序而不是(更传统的?)纬度,经度?这是源数据的空间参考系统(NAD83)的属性吗?
我已经在单个多边形上尝试了这种方法,但是似乎没有什么不同>
from django.contrib.gis.gdal import SpatialReference, CoordTransform
d[0].get_geoms[0].transform(
CoordTransform(d[0].srs, SpatialReference('WGS84')),
clone = True
).coords
(((-81.11055999999999, 39.472046),
(-81.11039799999999, 39.472336),
(-81.109926, 39.473163),
(-81.10980699999999, 39.473371),
(-81.109729, 39.473518999999996),
...),)
第二个问题,我可以传递给DataSource
的参数使它按照我想要的顺序排列吗?
或者,第三个问题,我是否以错误的方式访问坐标点?
很明显,我可以手动通过遍历所有多边形和所有点并重新排列它们来纠正此问题,但是我想了解为什么人口普查首先要按此顺序提供它们。