簡體   English   中英

將底圖添加到 geopandas plot

[英]Adding basemap to geopandas plot

我有一個 geojson 文件,其中包含覆蓋有六邊形多邊形的紐約市,我將其讀入 geopandas dataframe。 我希望將 Stamen TonerLite 底圖添加到 dataframe 的 plot 中。 但是,我無法復制與此處的工作示例相同的結果 - https://geopandas.org/gallery/plotting_basemap_background.html

我在下面給出一個小例子,相關的 dataframe 的代碼和 crs:

%matplotlib inline

import matplotlib
import matplotlib.pyplot as plt
import geopandas as gpd
import contextily as ctx

fp = "/data/hex_bins/nyc_hex_bins.geojson"
map_df = gpd.read_file(fp)
map_df = map_df.to_crs(epsg=3857)

ax = map_df.plot(figsize=(10, 10), alpha=0.5, edgecolor='k')
ctx.add_basemap(ax, zoom=12, source=ctx.providers.Stamen.TonerLite)
ax.set_axis_off()

我得到一個沒有 map 背景的空白背景,只有紐約市形狀的六邊形。

我 plot 的 dataframe 的 crs 是

<Projected CRS: EPSG:3857>
Name: WGS 84 / Pseudo-Mercator
Axis Info [cartesian]:
- X[east]: Easting (metre)
- Y[north]: Northing (metre)
Area of Use:
- name: World - 85°S to 85°N
- bounds: (-180.0, -85.06, 180.0, 85.06)
Coordinate Operation:
- name: Popular Visualisation Pseudo-Mercator
- method: Popular Visualisation Pseudo Mercator
Datum: World Geodetic System 1984
- Ellipsoid: WGS 84
- Prime Meridian: Greenwich

crs 與我從上述鏈接的示例中獲得的完全相同(該示例對我有用。)

我如何找出問題所在? 多年來,我使用 folium 或 ipyleaflet 將這個 geojson 文件用於許多地塊,並且不懷疑它有什么問題。 但這里是文件的鏈接 - https://drive.google.com/file/d/1HO854_YFTtRaL4e-nPrL43woYou-IY-a/view?usp=sharing

您的文件已損壞。 GeoJSON 加載了 CRS 3857,而幾何本身在 4326 中。只需在重新投影到 Web 墨卡托之前分配正確的 CRS。

map_df = gpd.read_file(fp)
map_df.crs = 4326  # this line
map_df = map_df.to_crs(epsg=3857)

ax = map_df.plot(figsize=(10, 10), alpha=0.5, edgecolor='k')
ctx.add_basemap(ax, zoom=12, source=ctx.providers.Stamen.TonerLite)
ax.set_axis_off()

請注意,您的六邊形尚未在正確的投影 CRS 中生成,因此它們是傾斜的。

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM