我想把纽约开放数据中的一个形状文件转换成EPSG:4326所以我可以用它和一些坐标来做一个叶绿体。shapefile在EPSG:2263所以当我将它导入GeoPandas
时,我尝试了以下方法:
# import shapefile data, convert to EPSG:4326
shapeData = gpd.read_file("~/Portfolio/nynta_19b/nynta.shp")
shapeData = shapeData.to_crs({ "init": "epsg:4326" })
print(shapeData.crs, "\n\n", shapeData.head())
{'init': 'epsg:4326'}
BoroCode BoroName CountyFIPS NTACode NTAName Shape_Leng \
0 3 Brooklyn 047 BK88 Borough Park 39247.228028
1 4 Queens 081 QN51 Murray Hill 33266.904995
2 4 Queens 081 QN27 East Elmhurst 19816.712293
3 4 Queens 081 QN07 Hollis 20976.335574
4 1 Manhattan 061 MN06 Manhattanville 17040.685413
Shape_Area geometry
0 5.400502e+07 POLYGON ((-73.97604935657382 40.63127590564677...
1 5.248828e+07 POLYGON ((-73.80379022888246 40.77561011179249...
2 1.972685e+07 POLYGON ((-73.86109724401859 40.76366447708767...
3 2.288777e+07 POLYGON ((-73.75725671509139 40.71813860166254...
4 1.064708e+07 POLYGON ((-73.94607828674226 40.82126321606192...
到目前为止似乎还不错。然后加载以下数据,我计划使用这些数据填充从shapefile获得的地图:
# properly format latitude and longitude columns for geopandas join
geoData = gpd.GeoDataFrame(initialData,
crs={ "init": "epsg:4326" },
geometry=gpd.points_from_xy(initialData.longitude, initialData.latitude))
print(geoData.head())
cmplnt_num cmplnt_fr_dt cmplnt_fr_tm ky_cd pd_cd law_cat_cd boro_nm \
0 407134549 04/30/2011 23:35:00 235 511.0 MISDEMEANOR BROOKLYN
1 513417880 04/30/2011 23:34:00 105 397.0 FELONY BROOKLYN
2 501724753 04/30/2011 23:30:00 353 462.0 MISDEMEANOR BRONX
3 250100240 04/30/2011 23:30:00 578 638.0 VIOLATION BRONX
4 633777397 04/30/2011 23:30:00 347 905.0 MISDEMEANOR BROOKLYN
loc_of_occur_desc prem_typ_desc x_coord_cd ... \
0 INSIDE RESIDENCE - PUBLIC HOUSING 1002397.0 ...
1 NaN STREET 1012560.0 ...
2 FRONT OF STREET 1012918.0 ...
3 INSIDE RESIDENCE - APT. HOUSE 1018694.0 ...
4 NaN HIGHWAY/PARKWAY 987712.0 ...
susp_race susp_sex latitude longitude \
0 NaN NaN 40.688071 -73.934567
1 BLACK M 40.650501 -73.897978
2 NaN NaN 40.826971 -73.896414
3 WHITE HISPANIC M 40.825312 -73.875547
4 NaN NaN 40.585357 -73.987537
lat_lon patrol_boro vic_age_group \
0 (40.688070936, -73.934566849) PATROL BORO BKLYN NORTH NaN
1 (40.650501226, -73.897978491) PATROL BORO BKLYN SOUTH 25-44
2 (40.826971006, -73.896414356) PATROL BORO BRONX 45-64
3 (40.825311778, -73.875546821) PATROL BORO BRONX 25-44
4 (40.58535697, -73.987537333) PATROL BORO BKLYN SOUTH NaN
vic_race vic_sex geometry
0 UNKNOWN E POINT (-73.93456684899999 40.688070936)
1 BLACK M POINT (-73.897978491 40.650501226)
2 WHITE HISPANIC M POINT (-73.89641435600001 40.826971006)
3 WHITE HISPANIC M POINT (-73.875546821 40.825311778)
4 UNKNOWN E POINT (-73.98753733300001 40.58535697)
[5 rows x 22 columns]
但是,当我尝试使用坐标信息执行空间连接(将每组坐标与相应的邻域列表区域相关联)时,我得到以下警告:
# execute spatial join of csv data into shapefile
combined = gpd.sjoin(shapeData, geoData, how="left", op="intersects")
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/lib/function_base.py:2167: RuntimeWarning: invalid value encountered in ? (vectorized)
outputs = ufunc(*inputs)
另外,显然在转换shapefile之后,当我查找它的crs属性时,我得到了以下结果:
{ "init": "epsg:4326", "no_defs": True }
所以我试着将坐标的CRS属性设置为相同的值,但仍然不起作用。我得到一个关于无效输入或什么的警告,当我试图绘制它和半小时后,使我的笔记本电脑听起来像一个喷气发动机,我仍然没有得到氯仿我的目标。你知道吗
如您所见,在将两组数据放在一起之前,我尝试确保这两组数据的格式都正确。我做错了什么?我能做些什么来修复它?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐