我是使用 Geopandas 和从 Geo Dataframe 绘制地图的新手。我有两个属于同一城市的地理数据框。但它们的来源不同。一个包含房屋的几何数据,另一个包含人口普查区的几何数据。我想在土地边界的顶部绘制房屋的边界。
下面是每个数据集的第一行。我也不确定为什么每个数据集中的几何多边形值的比例如此不同。
我在 Jupyer Notebook 中尝试了以下代码,但没有显示任何内容。
f, ax = plt.subplots()
tract_data.plot(ax=ax)
house_data.plot(ax=ax)
Run Code Online (Sandbox Code Playgroud)
但出现了一个空的情节。
这是我的第一篇文章。请让我知道我还能提供什么。
当我尝试将 csv 文件作为地理数据框上传时,我收到此错误。根据本网站上的其他问题解决方案,此方法应该可以解决问题。
\n这是我用来执行的代码:将文件上传为 gdf,然后生成仅包含某些列的子集数据帧。
\ncp_union = gpd.read_file(r'C:\\Users\\User\\Desktop\\CPAWS\\terrestrial_outputs\\cp_union.csv')\ncp_union.crs = 'epsg:3005'\n\ncp_trimmed = cp_union[['COSEWIC_status','reason_for_designation','cnm_eng','iucn_cat','mgmt_e','status_e','classification','sq_m']]\nRun Code Online (Sandbox Code Playgroud)\n如标题中所述,我收到的错误是这样的:将ValueError: GeoDataFrame does not support multiple columns using the geometry column name 'geometry'.gdf 保存为 csv 然后将其重新加载为 gdf 的过程中是否有某些部分会导致创建额外的几何列?
编辑
\n在另一个脚本中,我加载了与 pd 数据框相同的 csv 文件。这是该 pd 数据帧中的第一行数据。
\n Unnamed: 0 0\nfid_critic 0\nscntfc_nm Castilleja victoriae\ncnm_eng Victoria's Owl-clover\ncnm_fren Castill\xc3\xa9jie de Victoria\ncswc_pop NaN\nch_stat Final\ncb_site_nm Cattle Point\nch_detail Detailed Polygon\nch_variant NaN\nch_method NaN\nhectares 0.8559\nutm_zone 10\nutm_east 478383\nutm_north 5365043\nlatitude 48.438164\nlongitude -123.29226\nshape_1 0.0\nobjectid 10251681.0\narea_sqm 8478.6733\nfeat_len 326.5008\nfid_protec -1\nname_e NaN\nname_f NaN\naichi_t11 NaN\niucn_cat NaN\noecm …Run Code Online (Sandbox Code Playgroud) 根据geopandas 文档,我正在尝试对字符串列表进行地理编码,但是我收到了错误.
我的环境
import geopandas as gdp
from geopandas.geocode import geocode
import geopy
import sys
print(sys.version)
print (gdp.__version__)
print (geopy.__version__)
3.4.3 |Anaconda 2.2.0 (x86_64)| (default, Mar 6 2015, 12:07:41)
[GCC 4.2.1 (Apple Inc. build 5577)]
0.1.1
1.10.0
Run Code Online (Sandbox Code Playgroud)
我正在努力做到
geocode(['boston, ma', '1600 pennsylvania ave. washington, dc'])
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
AttributeError Traceback (most recent call last)
<ipython-input-77-d7e5e2fb2b1d> in <module>()
----> 1 geocode(['boston, ma', '1600 pennsylvania ave. washington, dc'])
/Users/tbmh1/anaconda/envs/devData34/lib/python3.4/site-packages/geopandas-0.1.1-py3.4.egg/geopandas/geocode.py in geocode(strings, provider, **kwargs)
70 'bing': geopy.geocoders.Bing,
71 'yahoo': Yahoo,
---> 72 'mapquest': geopy.geocoders.MapQuest, …Run Code Online (Sandbox Code Playgroud) 这是我试图可视化的数据示例
Prince Edward Island 2.333
Manitoba 2.529
Alberta 2.6444
British Columbia 2.7902
Saskatchewan 2.9205
Ontario 3.465
New Brunswick 3.63175
Newfoundland and Labrador 3.647
Nova Scotia 4.25333333333
Quebec 4.82614285714
Nunavut NaN
Yukon NaN
Northwest Territories NaN
Run Code Online (Sandbox Code Playgroud)
我想通过根据与每个省相关联的数字为每个省着色来可视化数据。当我这样做时,Nan 的颜色就像颜色图的最小值。有没有一种简单的方法可以将 Nan 映射到白色?
这是我的代码:
plt.figure(figsize=(15,15))
vmin, vmax = canada.Partying.min(), canada.Partying.max()
ax = canada.plot(column='Partying', cmap='viridis', vmin=vmin, vmax=vmax)
# add colorbar
fig = ax.get_figure()
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='viridis', norm=plt.Normalize(vmin=vmin, vmax=vmax))
# fake up the array of the scalar mappable. Urgh...
sm._A …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的Mac OS X上安装geopandas.
我做了什么:
• 在此处下载并安装了Anaconda for Python 2.7 .图形安装程序.
• python --version返回以下结果:Python 2.7.13 :: Anaconda 4.3.0 (x86_64)
•使用此行安装的geopandas : conda install -c conda-forge geopandas. 据我所知,此命令还安装了所有其他必需的软件包.这是安装的所有命令的列表:
click-plugins: 1.0.3-py27_0 conda-forge
cligj: 0.4.0-py27_0 conda-forge
descartes: 1.1.0-py27_0 conda-forge
expat: 2.1.0-2 conda-forge
fiona: 1.7.3-np111py27_0 conda-forge
freexl: 1.0.2-1 conda-forge
gdal: 2.1.3-np111py27_0 conda-forge
geopandas: 0.2.1-py27_3 conda-forge
geos: 3.5.1-1 conda-forge
giflib: 5.1.4-0 conda-forge
hdf4: 4.2.12-0 conda-forge
json-c: 0.12-0 conda-forge
kealib: 1.4.6-3 conda-forge
libdap4: 3.18.3-2 conda-forge
libnetcdf: 4.4.1.1-2 conda-forge
libpq: 9.5.4-3 conda-forge
libspatialindex: 1.8.5-1 …Run Code Online (Sandbox Code Playgroud) 我使用geopandas和colormap代码绘制地图:
import numpy as np
## make up some random data
df = pd.DataFrame(np.random.rand(20, 3), columns=['x', 'y', 'val'])
df['geometry'] = df.apply(lambda row: shapely.geometry.Point(row.x, row.y), axis=1)
# make it a geopandas DataFrame
gdf = gpd.GeoDataFrame(df)
## the plotting
ax = gdf.plot(column='val', colormap='hot', vmin=vmin, vmax=vmax)
# add colorbar
fig = ax.get_figure()
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='hot', norm=plt.Normalize(vmin=0, vmax=1))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
fig.colorbar(sm, cax=cax)
Run Code Online (Sandbox Code Playgroud)
然后,我得到这个图(数据与上面的示例不同) …
我想并排绘制两个 tematic 地图以进行比较。我正在使用 geopandas 绘制地图和 pysal 从空间分析生成地图。
与此问题类似,但那里没有答案。
我安装了anaconda,然后conda install -c conda-forge geopandas。当我跑步时import geopandas,我得到了
>>> import geopandas as gpd
anaconda3/envs/gis/lib/python3.7/importlib/_bootstrap.py:219:
RuntimeWarning: numpy.dtype size changed, may indicate binary
incompatibility. Expected 96, got 88
return f(*args, **kwds)
Run Code Online (Sandbox Code Playgroud)
因此,我尝试更新Anaconda env的所有软件包,例如conda update --all,但这并不能解决警告。什么都解决它更新特定的包:conda update numpy。
所以,我的问题是:该怎么conda update --all做,不会更新所有软件包?
我正在尝试反转地图。
import geopandas as gpd
import geoplot as gplt
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
denmark = world[world.name == 'Denmark']
Run Code Online (Sandbox Code Playgroud)
我想找出“丹麦”数据框的边界,为此我可以创建一个覆盖整个丹麦的盒子形状的 GeoDataFrame。
然后我会将它与“丹麦”相交以获得所有不是丹麦的形状,我以后可以用它来覆盖我不想显示的地图部分。
我尝试查看 GeoDataFrame 以手动创建此框,但效果不佳。
cords = [c3
for c in mapping(denmark['geometry'])['features']
for c2 in c['geometry']['coordinates']
for c3 in c2
]
xcords = [x[0] for x in cords if isinstance(x[0], float)]
ycords = [y[1] for y in cords if isinstance(y[1], float)]
w3 = gpd.GeoDataFrame(
[Polygon([[max(xcords), max(ycords)],
[max(xcords), min(ycords)],
[min(xcords), min(ycords)],
[min(xcords), max(ycords)]
])],
columns = ['geometry'],
geometry='geometry')
Run Code Online (Sandbox Code Playgroud)
有没有简单快捷的方法来获得这个盒子?或者有没有办法 tp 反转 GeoDataFrame?
我有一个大(O(10^6)行)数据集(带值的点),我需要对所有点执行以下操作:
“非矢量化”方法是简单地循环所有点......对于所有点,然后应用逻辑。然而,这扩展性很差。
我已经包含了一个可以完成我想要的玩具示例。我已经考虑过的想法是:
这是我要实现的逻辑的一个玩具示例:
import pandas as pd
import numpy as np
from shapely.wkt import loads
import geopandas as gp
points=[
'POINT (1 1.1)', 'POINT (1 1.9)', 'POINT (1 3.1)',
'POINT (2 1)', 'POINT (2 2.1)', 'POINT (2 2.9)',
'POINT (3 0.8)', 'POINT (3 2)', 'POINT (3 3)'
]
values=[9,8,7,6,5,4,3,2,1]
df=pd.DataFrame({'points':points,'values':values})
gdf=gp.GeoDataFrame(df,geometry=[loads(x) for x in df.points], crs={'init': 'epsg:' + str(25832)})
for index,row in gdf.iterrows(): # Looping over all points
gdf['dist'] …Run Code Online (Sandbox Code Playgroud)