在GIS領(lǐng)域中,將地理信息數(shù)據(jù)轉(zhuǎn)換成JSON格式是非常常見的操作。JSON作為一種輕量級(jí)的數(shù)據(jù)交換格式,具有易讀、易寫、易解析和跨平臺(tái)等優(yōu)點(diǎn)。
下面以Python為例,介紹如何將GIS數(shù)據(jù)轉(zhuǎn)換成JSON格式。
import json import arcpy # 設(shè)置工作空間 arcpy.env.workspace = r"C:\gisdata" # 打開要素類 fc = "roads.shp" # 創(chuàng)建一個(gè)空的feature list features = [] # 使用游標(biāo)遍歷要素類中的所有要素 with arcpy.da.SearchCursor(fc, ["SHAPE@", "name"]) as cursor: for row in cursor: feature = {} # 構(gòu)造geometry對(duì)象 geom = {} geom["type"] = "LineString" geom["coordinates"] = [] for point in row[0].getPart(0): geom["coordinates"].append([point.X, point.Y]) feature["geometry"] = geom # 構(gòu)造屬性值 properties = {} properties["name"] = row[1] feature["properties"] = properties features.append(feature) # 構(gòu)造GeoJSON對(duì)象 geojson = {} geojson["type"] = "FeatureCollection" geojson["features"] = features # 將GeoJSON對(duì)象轉(zhuǎn)換成JSON格式并保存到文件中 with open("roads.json", "w") as outfile: json.dump(geojson, outfile)
以上代碼中,首先使用arcpy模塊打開要素類,然后使用游標(biāo)遍歷要素類中的所有要素,將每個(gè)要素轉(zhuǎn)換成GeoJSON對(duì)象,并添加到feature list中。最后,將feature list構(gòu)造成GeoJSON對(duì)象,并將其轉(zhuǎn)換成JSON格式存儲(chǔ)到文件中。
需要注意的是,在將要素轉(zhuǎn)換成GeoJSON對(duì)象時(shí),需要注意要素的類型和坐標(biāo)系的問題,這樣才能正確地構(gòu)造geometry對(duì)象,否則容易出現(xiàn)錯(cuò)誤。