Questions tagged «geopandas»

一个开放源代码项目,可简化在Python中使用地理空间数据的工作。

2
将熊猫数据框转换为GeoDataFrame
这似乎是一个简单的问题,但是我无法弄清楚如何将大熊猫DataFrame转换为GeoDataFrame进行空间连接。 这是使用我的数据的示例df.head(): Date/Time Lat Lon ID 0 4/1/2014 0:11:00 40.7690 -73.9549 140 1 4/1/2014 0:17:00 40.7267 -74.0345 NaN 实际上,此数据框是从CSV创建的,因此,如果更容易直接将CSV作为GeoDataFrame读取,也可以。
42 csv  geopandas  pandas 

5
GeoPandas:查找其他数据框中的最近点
我有2个地理数据框: import geopandas as gpd from shapely.geometry import Point gpd1 = gpd.GeoDataFrame([['John',1,Point(1,1)],['Smith',1,Point(2,2)],['Soap',1,Point(0,2)]],columns=['Name','ID','geometry']) gpd2 = gpd.GeoDataFrame([['Work',Point(0,1.1)],['Shops',Point(2.5,2)],['Home',Point(1,1.1)]],columns=['Place','geometry']) 我想为gpd1中的每一行找到gpd2中最近点的名称: desired_output = Name ID geometry Nearest 0 John 1 POINT (1 1) Home 1 Smith 1 POINT (2 2) Shops 2 Soap 1 POINT (0 2) Work 我一直在尝试使用lambda函数使其工作: gpd1['Nearest'] = gpd1.apply(lambda row: min_dist(row.geometry,gpd2)['Place'] , …

3
将GeoPandas数据框添加到PostGIS表中?
我有一个简单的GeoPandas数据框: 我想将此GeoDataframe上传到PostGIS表。我已经具有PostGIS扩展的数据库设置,但是似乎无法将此数据框添加为表格。 我尝试了以下方法: engine = <> meta = MetaData(engine) eld_test = Table('eld_test', meta, Column('id', Integer, primary_key=True), Column('key_comb_drvr', Text), Column('geometry', Geometry('Point', srid=4326))) eld_test.create(engine) conn = engine.connect() conn.execute(eld_test.insert(), df.to_dict('records'))

2
使用geopandas获取多边形区域?
给定一个geopandas GeoDataFrame包含一系列多边形的区域,我想获取列表中每个要素的面积(平方公里)。 这是一个很常见的问题,并且在过去通常建议的解决方案是使用shapely和pyproj直接(如这里和这里)。 有没有办法做到这一点geopandas?

3
使用Python分解基于属性的多边形(形状为fiona)?
我一直在尝试创建一个功能,该功能基本上与QGIS的“溶解”功能相同。我认为这将超级容易,但显然并非如此。因此,从我收集到的信息来看,在这里使用fiona配合体形应该是最好的选择。我刚开始弄乱矢量文件,所以这个世界对我和python来说都是新的。 对于这些示例,我使用的是位于此处http://tinyurl.com/odfbanu的County shapefile, 所以这里是我收集的一些代码,但找不到使它们协同工作的方法 目前,我最好的方法是基于以下方法:https : //sgillies.net/2009/01/27/a-more-perfect-union-continued.html。它工作正常,并且我获得了52个状态的列表作为Shapely几何形状。如果有更直接的方法来完成此部分,请随时发表评论。 from osgeo import ogr from shapely.wkb import loads from numpy import asarray from shapely.ops import cascaded_union ds = ogr.Open('counties.shp') layer = ds.GetLayer(0) #create a list of unique states identifier to be able #to loop through them later STATEFP_list = [] for i in …


1
为什么Shapely的捕捉(GEO捕捉)无法按预期工作?
我试图使用Shapely / Geopandas将两条线彼此对齐,但是对齐的结果非常奇怪。我试过了 : import geopandas as gpd from shapely.geometry import * from shapely.ops import snap lines1 = gpd.GeoDataFrame.from_file('lines1.shp') lines1 = lines1.to_crs({'init': 'epsg:2227'}) lines2 = gpd.GeoDataFrame.from_file('lines2.shp') lines2 = lines2.to_crs({'init': 'epsg:2227'}) res = lines1 lines2_union = lines2.geometry.unary_union res.geometry = res.geometry.apply(lambda x: snap(x, lines2_union, 14)) res.to_file('result.shp', driver="ESRI Shapefile") 并得到了这个结果: lines1 = 红色线 …

6
将原始数据读入大熊猫
是否可以将原始数据读入a geopandas GeoDataFrame,la a pandas DataFrame? 例如,以下工作: import pandas as pd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") pd.read_json(io.BytesIO(r.content)) 以下不是: import geopandas as gpd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") gpd.read_file(io.BytesIO(r.content)) 换句话说,是否可以在不先将数据保存到磁盘的情况下读取内存中的地理空间数据?

1
将特征计数为形状多边形的交点
我有一个包含数百个形状和几何形状的大熊猫 。多边形在很多地方重叠。我想制作一个新几何,其中包含其中有多少重叠的计数。像这样:GeoDataFramePolygonMultiPolygon 有人对如何解决这个问题有任何想法吗?我什至看不到办法。 最终,我特别希望能够对多边形进行加权,以使某些多边形自己值2。使用shapely的Z字段执行此操作可能很好。 除了:我与这些库都不特别相关,这就是我最终的去向。这些几何形状中的坐标实际上是像素坐标-我正努力制作栅格以使其覆盖在另一幅图像上。我希望将占用空间保持尽可能小,因为我希望能够将这些资源部署到可能无法安装随机资源的云服务器等中。

3
geopandas空间连接极慢
我正在使用下面的代码来查找数百万个GPS点的国家(有时是州)。该代码当前每点大约需要一秒钟,这非常慢。shapefile为6 MB。 我读到geopandas使用rtree进行空间连接,这使它们效率极高,但这在这里似乎不起作用。我究竟做错了什么?我希望每秒能获得一千个积分。 可以在此处(5MB)下载shapefile和csv:https ://www.dropbox.com/s/gdkxtpqupj0sidm/SpatialJoin.zip ? dl =0 import pandas as pd import geopandas as gpd from geopandas import GeoDataFrame, read_file from geopandas.tools import sjoin from shapely.geometry import Point, mapping,shape import time #parameters shapefile="K:/.../Shapefiles/Used/World.shp" df=pd.read_csv("K:/.../output2.csv",index_col=None,nrows=20)# Limit to 20 rows for testing if __name__=="__main__": start=time.time() df['geometry'] = df.apply(lambda z: Point(z.Longitude, z.Latitude), …


1
GeoPandas to_file()保存不带坐标系的GeoDataFrame
我有 GeoPandas 0.2.1 py27_0 菲奥娜1.7.0 np110py27_1 Python 2.7.10 安装在Anaconda 2-4.1.1-Windows-x86环境中。我能够GeoDataFrame通过读取输入数据集并进行操作来构造数据,但是保存输出数据集不会保留坐标系。 import geopandas as gpd world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) world.to_file(driver='ESRI Shapefile',filename=r'C:\GIS\Temp\world_out.shp') 在world_out.shp不包含的特征和源shape文件的模式,但坐标系是未定义的(<Unknown>)。该world_out.prj文件为0 KB,不包含任何内容。 out = gpd.read_file(r'C:\GIS\Temp\world_out.shp') print out.crs >>> {} 我已经测试过使用纯Fiona执行此操作,并且可以很好地保存crs信息: import fiona datasrc_path = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb' with fiona.drivers(): with fiona.open(datasrc_path,layer='cities') as source: meta = source.meta meta['driver'] = 'ESRI Shapefile' meta['layer'] …

1
Python:根据条件中断线串
我有一堆线串的geopandas数据框,其中的一些数据与每个顶点/点相关: Point_x = (Lat, Lon, Time, ID, Data1, Data2, Data3) 这些点将根据ID转换为线串,并按时间排序。 我想在满足某些条件的地方断开线串。此时,点之间的距离大于某个值。将来,数据字段的功能可能会有所价值。例如,当Speed超过5 kph时拆分线串。 当前的问题是,某些轨道是由具有重复ID的点形成的,因此线串在很长的距离上来回跳跃,我希望有一个阈值来打破这些线。 关于构建此方法的正确方法或可能有用的库/方法的任何想法? 该数据帧有超过15万条磁道,每个磁道中有许多点,因此效率会很高。 这是轨道DF的示例: ID geometry 204235000 LINESTRING (37.62001 -28.99535, 37.62015 -28.9... 205400000 LINESTRING (3.807816666666666 -18.083181666666... 207138000 LINESTRING (22.73206 -34.97915833333333, 22.73... 209016000 LINESTRING (8.447673333333331 -23.522783333333... 这是DF点的示例。共有18列,包括日期时间,时间点(经度,纬度),速度,大小等: Index Heading Latitude Longitude ID 20 92.8 -35.946802 13.089695 210725000 21 …

2
通过地理箱中的边界框进行过滤?
我在EPSG:4326中有一个geopandas数据框,我将制作一个新的数据框,其中包含属于某个边界框的所有行。 首先,我得到了我关心的边界框(实际上是另一个数据框的边界框): print df_sussex.total_bounds [ -1.57239292 50.57467674 0.14528384 51.27465152] 然后,我制作一个仅由该边界框组成的数据框: pts = gpd.GeoDataFrame(df_sussex.total_bounds) 最后,我尝试获取与该边界框相交的所有特征: sac_sussex = gpd.overlay(pts, df_sac, how='intersection') 但这给了我AttributeError: No geometry data set yet (expected in column 'geometry'。 我究竟做错了什么?
11 python  geopandas 

1
Geopandas线多边形相交
我正在尝试查找多条线与两个不同地理数据框的多边形相交的位置: from shapely.geometry import Polygon, LineString import geopandas as gpd polygon = Polygon([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)]) line1 = LineString([(0.5, 0.5), (0.7, 0.7)]) line2 = LineString([(0.9, 0.9), (0.2, 0.6)]) poly_gdf = gpd.GeoDataFrame(geometry=[polygon]) line_gdf = gpd.GeoDataFrame(geometry=[line1, line2]) 这就是上面的地理数据框的样子(一个具有多边形,另一个具有两条线)。在我看来,两条线都与多边形相交: 但是,相交的输出非常令人困惑: print(line_gdf.intersects(poly_gdf)) 0真实 1错误 print(line1.intersects(polygon)) print(line2.intersects(polygon)) 真正 真正 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.