Django的geojson序列化器以错误的顺序输出坐标

时间:2016-06-29 04:13:38

标签: python django geojson geodjango django-serializer

我正在使用Django的geojson序列化程序,但它没有按正确的顺序获取坐标(根据GeoJson spec)。而不是(东方,北方)我得到(纬度,经度),当我显示地图时,我显然得到了错误的位置,因为经度被解释为纬度和纬度作为经度。

这些是我的原始坐标:

[(38.8976094, -77.0367349), (19.4348892, -99.1447678)]

这是序列化代码:

from django.core.serializers import serialize
serialize('geojson', Place.objects.all(),  
          geometry_field='location', fields=('name', ))

这是我序列化时得到的结果:

u'{"type": "FeatureCollection",
 "crs": {"type": "name", "properties": {"name": "EPSG:4326"}}, 
 "features": [{"geometry": {"type": "Point", "coordinates": [38.8976094, -77.0367349]}, "type": "Feature", "properties": {"name": "White House"}}, {"geometry": {"type": "Point", 
 "coordinates": [19.4348892, -99.1447678]}, "type": "Feature", "properties": {"name": "Palacio de Bellas Artes"}}]}'

我安装了GDAL,其他一切似乎都运行正常。我是否认为序列化器应该选择正确的坐标顺序,或者我必须手动完成它吗?

1 个答案:

答案 0 :(得分:0)

您可以在geojson输出中获得经度和纬度,因为您似乎为Places模型中的位置字段选择了默认的srid 4326。使用时,GeoJSON Serializer也使用4326作为default srid。在序列化坐标时,您是否尝试将原始纬度/经度坐标转换为与4326 / WGS84不同的坐标系/ srid(您似乎期望东向和北向?)?请详细说明。

我最初的建议是尝试在您的项目中实施django-geojson应用。 " [D] jango-geojson是将(de)序列化(Geo)Django对象转换为GeoJSON的帮助程序集合。"。如果我需要输出格式正确的geojson,我会使用它。