我正在尝试将 GeoPandas 用于一个(稍微)更复杂的项目,但目前我无法以投影方式写出一个包含单个点的简单 shapefile。
以下代码生成的 shapefile 通常看起来不错 - 但 .prj 是空的:
import pandas as pd
from geopandas import GeoDataFrame
from shapely.geometry import Point
df=pd.read_csv("richmond.csv")
geometry = [Point(xy) for xy in zip(df.x, df.y)]
crs = {'init': 'epsg:4326'}
geo_df = GeoDataFrame(df, crs=crs, geometry=geometry)
geo_df.to_file("geopan.shp")
csv 是 2 行 2 列(标题行,然后是第二行的经度和纬度):
我是否遗漏了一些明显的东西?我搜索了 stackoverflow、geopandas 文档等。所有这些似乎都暗示 to_file() 应该可以正常工作。
从长远来看,目标是创建一些函数供我的学生在实验室中使用 - 一个沿着美国的宽度/高度的纬度或经度绘制一条线,另一个将线剪裁成多边形(各州),以便学生能够找出每个州中最宽的点,作为对使用空间数据的温和介绍。我试图避免使用 arcpy,因为它是 Python 2,我认为(并且认为)我通过教他们 Python 3 的方式来做正确的事。我希望他们能够通过能够调试他们的方法尽管在 Arc 中打开线路,因此进行了此测试。
最佳答案
所以,在玩过这个之后,我确定在当前版本的 Anaconda 下,问题出在 Windows 机器上的 crs = {'init': 'epsg:4326'}
上。这在 Mac 上运行良好,但在我或我学生的任何 Windows 系统上都不起作用。更改此行以使用 proj4 字符串 crs = {'proj': 'latlong', 'ellps': 'WGS84', 'datum': 'WGS84', 'no_defs': True}
相反工作得很好。与其说是实际解决方案,不如说是变通办法,但它似乎始终有效。
关于projection - Geopandas to_file 给出空白的 prj 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54963638/