合并学区的GeoJSON文件

时间:2017-09-28 17:26:28

标签: python json geojson shapefile

我有3个包含学区边界的GeoJSON文件。每个文件都包含特定学区组的数据(School_District_Unified.geojson,School_District_Elementary.geojson,School_District_Secondary.geojson)。

Link到这里的GeoJSON文件。

我尝试使用的脚本来自this post,但没有成功:

import json
import geojson
from functools import partial
import pyproj
import shapely.geometry
import shapely.ops

# reading into three geojson objects, in a GCS (WGS84)
with open('School_District_Elementary.geojson') as geojson1:
    poly1_geojson = json.load(geojson1)

with open('School_District_Secondary.geojson') as geojson2:
    poly2_geojson = json.load(geojson2)

with open('School_District_Unified.geojson') as geojson3:
    poly3_geojson = json.load(geojson3)

# pulling out the polygons
poly1 = shapely.geometry.asShape(poly1_geojson['features'][2]
['geometry'])
poly2 = shapely.geometry.asShape(poly2_geojson['features'][2]
['geometry'])
poly3 = shapely.geometry.asShape(poly3_geojson['features'][2]
['geometry'])

# checking to make sure they registered as polygons
print poly1.geom_type
print poly2.geom_type
print poly3.geom_type

# merging the polygons - they are feature collections, containing a 
# point, a polyline, and a polygon - I extract the polygon
# for my purposes, they overlap, so merging produces a single polygon 
# rather than a list of polygons
mergedPolygon = poly1.union(poly2)

# using geojson module to convert from WKT back into GeoJSON format
geojson_out = geojson.Feature(geometry=mergedPolygon, properties={})

# outputting the updated geojson file - for mapping/storage in its 
#GCS format
with open('Merged_Polygon.json', 'w') as outfile:
     json.dump(geojson_out.geometry, outfile, indent=3, 
encoding="utf-8")
outfile.close()

# reprojecting the merged polygon to determine the correct area
# it is a polygon covering much of the US, and derived from USGS 
#data, so using Albers Equal Area
project = partial(
    pyproj.transform,
    pyproj.Proj(init='epsg:4326'),
    pyproj.Proj(init='epsg:5070'))

mergedPolygon_proj = shapely.ops.transform(project,mergedPolygon)

1 个答案:

答案 0 :(得分:0)

json.dump(geojson_out.geometry, outfile, indent=3, encoding="utf-8")

json.dump没有encoding参数。

1)从json.dump电话中删除编码。

json.dump(geojson_out.geometry, outfile, indent=3)

2)更改为在打开的文件中使用编码

with open('Merged_Polygon.json', 'w', encoding='utf8') as outfile:
    json.dump(geojson_out.geometry, outfile, ensure_ascii=False)