当前位置: 首页 > 知识库问答 >
问题:

从包含元组坐标列表的GeoPandas df列到包含LineString的列

曾飞沉
2023-03-14

我有一个GeoPandas df:

import geopandas as gpd
from shapely.geometry import LineString

geo_df = gpd.GeoDataFrame({'name': ['foo', 'bar', 'oof'], 'geometry': [[(5.239672304278279, 43.449400744605434), (5.291017601291771, 43.40657292095388)], [(5.27346289130589, 43.418074031107516), (4.935465352479518, 43.44997495014662)], [(4.935465352479518, 43.44997495014662), (5.64570049516335, 43.367506660731095)]]})

看起来像:

   name   geometry
0   foo    [(5.239672304278279, 43.449400744605434), (5.2...
1   bar    [(5.27346289130589, 43.418074031107516), (4.93...
2   oof    [(4.935465352479518, 43.44997495014662), (5.64...

如何将坐标列转换为LineString(无论元组列表中有多少个点)?例如。:

   name   geometry
0   foo    LINESTRING (5.239672304278279 43.449400744605434, 5.2...
1   bar    LINESTRING (5.27346289130589 43.418074031107516, 4.93...
2   oof    LINESTRING (4.935465352479518 43.44997495014662, 5.64...

编辑:我试过(见Prateek的回答):

geo_df['geometry']=geo_df['geometry'].apply(lambda x: LineString(x))

以及:

geo_list = [LineString(x) for i in geo_df['geometry'].tolist()]
geo_df['geometry'] = geo_list

两者都返回以下错误:

属性错误回溯(上次调用)~/opt/anaconda3/lib/python3.8/site-packages/shapely/speedups//u speedups.pyx in shapely.speedups.\u speedups.geos\u linestring\u from\u py()

列表对象没有属性array_interface

在处理上述异常时,发生了另一个异常:

在17geo_df['几何']=tuple_list18---

#############################################################################################################################################

熊猫/_libs/lib.pyx_libs.lib.map_infer()

in(x)17geo_df['几何']=tuple_list18---

~/opt/anaconda3/lib/python3.8/site-packages/shapely/geometry/linestring.py位于init(self,坐标)46 BaseGeometry.init(self)47如果坐标不是None:---

~/opt/anaconda3/lib/python3.8/site-包/形状/几何/linestring.py_set_coords(自我,坐标)95 def_set_coords(自我,坐标): 96self.empty () ---

_speedups.pyx在shapely.speedups._speedups.geos_linestring_from_py

断言者错误:

共有1个答案

左丘阳晖
2023-03-14

这应该很简单。

import geopandas as gpd
from shapely.geometry import LineString

geo_df = gpd.GeoDataFrame({'name': ['foo', 'bar', 'oof'], 'geometry': [[(5.239672304278279, 43.449400744605434), (5.291017601291771, 43.40657292095388)], [(5.27346289130589, 43.418074031107516), (4.935465352479518, 43.44997495014662)], [(4.935465352479518, 43.44997495014662), (5.64570049516335, 43.367506660731095)]]})

geo_df['geometry']=geo_df['geometry'].apply(lambda x: LineString(x))
 类似资料:
  • 本文向大家介绍从Python中的元组列表中找到包含给定元素的元组,包括了从Python中的元组列表中找到包含给定元素的元组的使用技巧和注意事项,需要的朋友参考一下 列表可以将元组作为其元素。在本文中,我们将学习如何识别包含特定搜索元素(字符串)的元组。 有条件 我们可以根据情况设计跟踪。之后,我们可以提及条件或条件组合。 示例 输出结果 运行上面的代码给我们以下结果- 带过滤器 我们将过滤器功能与

  • 我正在使用Jackson 2.4将对象序列化为JSON。 当我序列化对象列表时,如果某些元素为空,则结果字符串包含一些“空”字符串。 如何防止元素被序列化?是否有任何配置?我已经设置了! 下面是我的代码: 连载之后我得到了这个:

  • 问题内容: 我看到人们正在使用另一个列表来查看列表中是否存在某项,但是有一种快速的方法吗?: 问题答案: 您可以使用以下语法: 同样,逆运算符: 它适用于列表,元组,集合和字典(检查键)。 请注意 ,这是列表和元组中的O(n)操作,而集合和字典中是O(1)操作。

  • 问题内容: 我的字符串列表如下所示: 我的期望是,我想检查父列表是否包含 序列 子列表,然后基于子列表获取父列表中的开始索引和结束索引。 从上面的示例: 我尝试使用方法,但它不在乎列表项的顺序,因此无法从此方法获取开始和结束索引。 我正在寻找最快的方法,因为我的列表中有很多数据,而且我必须从许多输入字符串中进行搜索。 任何帮助,将不胜感激! 更新 : 我需要获取所有子列表的索引都包含在父列表中。例

  • 问题内容: 我有一个这样的清单: 我想获取T的.class。我该怎么做? 我的意思是: 编辑: 我尝试过: 当我调试它时 genericType 值: java.util.List 所以我认为这肯定是与该问题不同的问题:获取java.util.List的泛型类型,因为如果您使用声明了一个类并在以后的其他方法中分配了某些内容,则该类消失了。 问题答案: 您不能因为类型擦除。泛型类型在运行时未知(已被

  • 本文向大家介绍计算Python列表中包含给定元素的子列表,包括了计算Python列表中包含给定元素的子列表的使用技巧和注意事项,需要的朋友参考一下 给定列表中的元素也可以作为另一个字符串出现在另一个变量中。在本文中,我们将查看给定列表中给定流出现了多少次。 随着范围和镜头 我们使用range和len函数来跟踪列表的长度。然后使用in条件查找字符串在列表中作为元素出现的次数。每当满足条件时,初始化为