Apple M1 不兼容 - 从具有形状多边形的 DataFrame 创建 GeoJSON 文件
Apple M1 Incompatibility - Creating a GeoJSON file from a DataFrame with Shapely Polygons
首先注意:我的机器是 Apple M1,这些机器尚不支持 GeoPandas,因此虽然 GeoPandas 很容易上手,但它不是一个可接受的解决方案这个实例。
是否可以创建一个函数或class从现有的 DataFrame 创建一个 geojson 文件,其中几何图形是一个多边形并存储在一个列中?
我已经提取了自定义地图的等高线,并设法创建了所述等高线的匀称几何形状。从那里,我将自定义等高线的几何图形与有关等高线的一些信息的数据框合并。
下面是 DataFrame 的结构示例。
ID metric geometry
0 Item_1 23 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
1 Item_2 17 POLYGON ((0 0, 2 0, 2 2, 0 2, 0 0))
2 Item_3 15 POLYGON ((0 0, 3 0, 3 3, 0 3, 0 0))
找到的解决方案 here 看起来可以满足点坐标,但没有 geojson.polygon 属性。至少我在文档中找不到。以下是解决方案;我已经强调了它的适用性不足的地方。
import pandas as pd
import geojson
def data2geojson(df):
features = []
insert_features = lambda X: features.append(
geojson.Feature(geometry=geojson.Point((X["long"],X["lat"],X["elev"])),
### I don't want to create a geoson.point geometry,
### there is no such geojson.polygon attribute to point to my DataFrame's 'geometry' column of polygons,
### and I don't have the lats, longs, etc. due to the polygon being extracted from a custom contour.
### So the closest applicable solution breaks down at this point.
properties=dict(ID=X["ID"],
metric=X["metric"])))
df.apply(insert_features, axis=1)
with open('map1.geojson', 'w', encoding='utf8') as fp:
geojson.dump(geojson.FeatureCollection(features), fp, sort_keys=True, ensure_ascii=False)
data2geojson(df)
提前致谢
卸载并重新安装 GeoPandas、Fiona 和 PyProj 后,问题仍然存在。经过一番挖掘后,我发现保留 GeoPandas 和 PyProj 安装,但卸载 Fiona 修复了循环错误,GeoPandas 按预期工作。
首先注意:我的机器是 Apple M1,这些机器尚不支持 GeoPandas,因此虽然 GeoPandas 很容易上手,但它不是一个可接受的解决方案这个实例。
是否可以创建一个函数或class从现有的 DataFrame 创建一个 geojson 文件,其中几何图形是一个多边形并存储在一个列中?
我已经提取了自定义地图的等高线,并设法创建了所述等高线的匀称几何形状。从那里,我将自定义等高线的几何图形与有关等高线的一些信息的数据框合并。
下面是 DataFrame 的结构示例。
ID metric geometry
0 Item_1 23 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
1 Item_2 17 POLYGON ((0 0, 2 0, 2 2, 0 2, 0 0))
2 Item_3 15 POLYGON ((0 0, 3 0, 3 3, 0 3, 0 0))
找到的解决方案 here 看起来可以满足点坐标,但没有 geojson.polygon 属性。至少我在文档中找不到。以下是解决方案;我已经强调了它的适用性不足的地方。
import pandas as pd
import geojson
def data2geojson(df):
features = []
insert_features = lambda X: features.append(
geojson.Feature(geometry=geojson.Point((X["long"],X["lat"],X["elev"])),
### I don't want to create a geoson.point geometry,
### there is no such geojson.polygon attribute to point to my DataFrame's 'geometry' column of polygons,
### and I don't have the lats, longs, etc. due to the polygon being extracted from a custom contour.
### So the closest applicable solution breaks down at this point.
properties=dict(ID=X["ID"],
metric=X["metric"])))
df.apply(insert_features, axis=1)
with open('map1.geojson', 'w', encoding='utf8') as fp:
geojson.dump(geojson.FeatureCollection(features), fp, sort_keys=True, ensure_ascii=False)
data2geojson(df)
提前致谢
卸载并重新安装 GeoPandas、Fiona 和 PyProj 后,问题仍然存在。经过一番挖掘后,我发现保留 GeoPandas 和 PyProj 安装,但卸载 Fiona 修复了循环错误,GeoPandas 按预期工作。