如何用Python解析GeoJSON

sto*_*ebe 3 python parsing geojson

我有一个查询的geojson数据,我现在想在屏幕上解析和打印.我目前的代码是:

import urllib
import geojson

while True:

    url = 'https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2012-01-01&endtime=2017-03-01&minmagnitude=4.0&maxmagnitude=9.0&minlongitude=5.95&maxlongitude=10.50&minlatitude=45.81&maxlatitude=47.81'
    uh = urllib.urlopen(url)
    data = uh.read()
    print data
    break
Run Code Online (Sandbox Code Playgroud)

看来这data是一个简单的字符串.但是,我认为它可以像json参数一样进行解析.我如何处理geojson数据以打印单个数据point,例如仅提取第一个点的坐标?

小智 29

import geojson
with open(path_to_file) as f:
    gj = geojson.load(f)
features = gj['features'][0]
Run Code Online (Sandbox Code Playgroud)

  • 这与使用基础包“json”加载文件有何不同? (2认同)
  • `geojson` 库自 2019 年以来没有任何版本,因此我建议使用更流行和最新的 `geopandas` 来代替 (2认同)

sag*_*arr 11

您还可以使用geopandas

import geopandas as gpd
earthquake = gpd.read_file('earthquake.geojson')
print(earthquake.head())
Run Code Online (Sandbox Code Playgroud)

  • 注意:此方法不会将数据读取为 geojson。它将数据读取为地理数据帧。 (3认同)
  • 这通常是读取 GeoJSON 并理解其内容的最快、最简单的方法。 (2认同)

Jes*_*ker 8

你可以像任何json一样阅读它:

import json
data = json.loads(datastring)
data['features'][0]['geometry'] #Your first point
Run Code Online (Sandbox Code Playgroud)

  • 如果从文件加载:使用 data = json.load(fileobject) (3认同)

pnz*_*pnz 6

您可以使用 json 导入来读取它,然后打开文件:

import json
with open(path) as f:
    data = json.load(f)
for feature in data['features']:
    print(feature['properties'])
Run Code Online (Sandbox Code Playgroud)