【问题标题】:Plotting specific column of GIS data using geopandas使用 geopandas 绘制特定列的 GIS 数据
【发布时间】:2021-08-08 23:48:28
【问题描述】:

我正在尝试使用 geopandas 重新创建纽约州地理数据的地图,并在此处找到可用数据:https://pubs.usgs.gov/of/2005/1325/#NY。我可以打印地图,但不知道如何利用其他文件来绘制它们的列。 任何帮助将不胜感激。

【问题讨论】:

    标签: gis geopandas


    【解决方案1】:

    你到底想做什么?

    这是一个快速设置,您可以使用它从站点下载 Shapefile 并访问 GeoDataFrame:

    import geopandas as gpd
    from io import BytesIO
    import requests as r
    
    # Link to file
    shp_link = 'https://pubs.usgs.gov/of/2005/1325/data/NYgeol_dd.zip'
    
    # Downloading the fie into memory
    my_req = r.get(shp_link)
    
    # Creating a file stream for GeoPandas
    my_zip = BytesIO(my_req.content)
    
    # Loading the data into a GeoDataFrame
    my_geodata = gpd.read_file(my_zip)
    
    # Printing all of the column names
    for this_col in my_geodata.columns:
        print(this_col)
    

    现在您可以使用方括号访问my_geodata 数据中的多个列。例如,如果我想访问存储在名为“SOURCE”的列中的数据,我可以使用my_geodata["SOURCE"]

    现在只需弄清楚您到底想用这些数据做什么。

    【讨论】:

    • 我想像他们在网站上所做的那样对其进行映射,然后放大到特定区域并可能突出显示特定类型的岩石。我看到你对 shapefile 做了什么,我很欣赏现在拥有这种能力。我不知道如何获取在元数据中解释的另一个文件中找到的数据,并使用名为 nyunits.csv 的相同数据找到数据并绘制不同的 ROCKTYPES。这可能吗,我没有看到数据如何组合在一起,形状文件似乎只是一个形状。谢谢。
    • 所以,回答你的问题有点棘手,将数据从一个数据帧复制到另一个数据帧很容易。您可以使用简单的merge 或 Geopandas 的sjoin 来完成此操作。这是一个简单的示例:x = pd.DataFrame({'col1':[1,2,3], 'col2':['a','b','c']}) y = pd.DataFrame({'col1':[3,3,1,1,2,2]}) y.merge(x, on='col1', how='left') 您的案例的问题是找到这些多个文件的确切连接方式。您必须自己阅读他们的文档(在页面顶部)才能弄清楚这一点,并尝试了解哪些列用作标识符。
    • 好像数据是专门为ArcMap软件设置的,我会按照这个教程尝试用geopandas做图:towardsdatascience.com/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多