Python GeoJSON到辛几何

Python GeoJSON到辛几何,python,python-2.7,python-3.x,geojson,sympy,Python,Python 2.7,Python 3.x,Geojson,Sympy,有人知道是否可以将GeoJSON几何体转换为Symphy几何体吗? 如果是,这是什么包装? 如果没有,谁能想出一种真正快速的方法来将GeoJSON特性转换为Symphy和Symphy?最好不比线性时间差 谢谢你我不知道有哪一个库可以做到这一点,但是你可以简单地构建一些可以做到这一点的东西 示例geoJson: { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry"

有人知道是否可以将GeoJSON几何体转换为Symphy几何体吗? 如果是,这是什么包装? 如果没有,谁能想出一种真正快速的方法来将GeoJSON特性转换为Symphy和Symphy?最好不比线性时间差


谢谢你

我不知道有哪一个库可以做到这一点,但是你可以简单地构建一些可以做到这一点的东西

示例geoJson:

{ "type": "FeatureCollection",
    "features": [
      { "type": "Feature",
        "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
        "properties": {"prop0": "value0"}
        },
      { "type": "Feature",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
            ]
          },
        "properties": {
          "prop0": "value0",
          "prop1": 0.0
          }
        },
      { "type": "Feature",
         "geometry": {
           "type": "Polygon",
           "coordinates": [
             [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
               [100.0, 1.0], [100.0, 0.0] ]
             ]
         },
         "properties": {
           "prop0": "value0",
           "prop1": {"this": "that"}
           }
         }
       ]
     }
共多边形:

from sympy import Point, Polygon, pi
>>> p1, p2, p3, p4, p5 = [(0, 0), (1, 0), (5, 1), (0, 1), (3, 0)]
>>> Polygon(p1, p2, p3, p4)
Polygon(Point2D(0, 0), Point2D(1, 0), Point2D(5, 1), Point2D(0, 1))
如您所见,geoJson特性[2].geometry.coordinates数组几乎与sympy geometry格式(数组数组数组vs元组数组)完全相同。就线性时间而言,您可以通过geoJson循环获取坐标数组并将其设置为sympy值


复杂性将取决于您希望支持的几何体类型(点、线串、多边形等),因为您需要使用正确的Symphy语法来匹配它们,但总体而言,这将是微不足道的

我不知道有哪一个库可以做到这一点,但您可以构建一些相当简单的东西来做到这一点

示例geoJson:

{ "type": "FeatureCollection",
    "features": [
      { "type": "Feature",
        "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
        "properties": {"prop0": "value0"}
        },
      { "type": "Feature",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
            ]
          },
        "properties": {
          "prop0": "value0",
          "prop1": 0.0
          }
        },
      { "type": "Feature",
         "geometry": {
           "type": "Polygon",
           "coordinates": [
             [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
               [100.0, 1.0], [100.0, 0.0] ]
             ]
         },
         "properties": {
           "prop0": "value0",
           "prop1": {"this": "that"}
           }
         }
       ]
     }
共多边形:

from sympy import Point, Polygon, pi
>>> p1, p2, p3, p4, p5 = [(0, 0), (1, 0), (5, 1), (0, 1), (3, 0)]
>>> Polygon(p1, p2, p3, p4)
Polygon(Point2D(0, 0), Point2D(1, 0), Point2D(5, 1), Point2D(0, 1))
如您所见,geoJson特性[2].geometry.coordinates数组几乎与sympy geometry格式(数组数组数组vs元组数组)完全相同。就线性时间而言,您可以通过geoJson循环获取坐标数组并将其设置为sympy值


复杂性将取决于您希望支持的几何体类型(点、线串、多边形等),因为您需要使用正确的Symphy语法来匹配它们,但总体而言,这将是微不足道的

很好的例子!我认为最大的问题是如何处理“LineString”类型,因为Line和Segment只接受2个pts作为类。同意,Line string稍微复杂一些(不确定Symphy是否具有该类型)。但是你总是可以把p1画成p2,p2画成p3,p3画成p4…等等,嗯,也许另一个库对我来说会更好。你需要什么样的sympy功能?大多数计算可以直接从geoJson格式进行。很好的例子!我认为最大的问题是如何处理“LineString”类型,因为Line和Segment只接受2个pts作为类。同意,Line string稍微复杂一些(不确定Symphy是否具有该类型)。但是你总是可以把p1画成p2,p2画成p3,p3画成p4…等等,嗯,也许另一个库对我来说会更好。你需要什么样的sympy功能?大多数计算可以直接从geoJson格式进行。