GeoJSON中坐标的顺序

17

我正在测试通过GitHub以geojson格式呈现数据,因为我想将其用于INSPIRE数据。 INSPIRE数据采用GML 3.2.1格式。 我已经从http://services.cuzk.cz/gml/inspire/cp/epsg-4258/(其中包含ETRS)下载了一个数据集。 我需要从中获取json文件,因此我在Quantum GIS(版本1.9)中打开了GML文件,并将其保存为geojson文件(CRS = EPSG :: 4326),然后上传到了我的GitHub。 geojson中的坐标顺序是(东部,北部),但是在从QGIS保存文件之后,它变成了(北部,东部)。 我的数据来自捷克共和国,但在也门渲染。 有人遇到过这个问题吗? 有人知道如何在geojson文件中切换坐标(或轴)的顺序吗? 我对基于xml的数据格式比json更有经验,因此希望这不是一个愚蠢的问题。

2个回答

49

对于标题中的问题,答案是坐标顺序为经度和纬度或东北方向。

来源:

3.1.1. 位置

位置是基本的几何构造。Geometry对象的“coordinates”成员由以下之一组成:

o 在点几何中,一个位置。

o 在线串或多点几何中,一组位置的数组。

o 在多边形或多线串几何中,线串或线环(参见3.1.6节)坐标的数组。

o 在多面几何中,多边形坐标的数组。

位置是数字数组。必须有两个或更多元素。第一和第二个元素分别为经度和纬度或东北方向,严格按照这个顺序使用十进制数。高程或海拔可以作为可选的第三个元素。

来自GeoJSON规范


5
对于任何寻找多边形坐标顺序的人,按照同一规范文件,外环为逆时针方向,内环为顺时针方向(即右手定则)。第一个和最后一个坐标应相同以闭合多边形。 - Chris Watts

0

你可以使用Python来切换坐标顺序:

import json
import sys

geodata = json.loads(open(sys.argv[1]).read())
for obj in geodata:
    if "coordinates" in obj:
        # reorder from northing, easting to easting, northing
        northing = obj["coordinates"][0]
        easting = obj["coordinates"][1]
        obj["coordinates"] = [ easting, northing ]

print json.dumps(geodata)

像这样运行:

python reorder_geojson.py geodata_ne.json > geodata_en.json

我更倾向于使用ogr2ogr解决方案,但这个也应该可行。 - Meďák

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接