• python Shapely 使用指南


    翻译:http://toblerity.org/shapely/manual.html

    引入包

    from shapely.geometry import Point
    from shapely.geometry import LineString

    共有的变量和方法

    object.area

      Returns the area (float) of the object.

    object.bounds

      返回对象的(minx,miny,maxx,maxy)元组(float类型)

    object.length

      返回对象的长度

    object.geom_type

      返回对象类型

    object.distance(other)

      返回本对象和另一个对象的距离

    object.representative_point()

      Returns a cheaply computed point that is guaranteed to be within the geometric object.

    >>> from shapely.geometry import Point
    >>> print Point(0,0).distance(Point(0,1))
    1.0
    >>> from shapely.geometry import LineString
    >>> line = LineString([(0,0), (1,1), (1,2)])
    >>> line.area
    0.0
    >>> line.bounds
    (0.0, 0.0, 1.0, 2.0)
    >>> line.length
    2.414213562373095
    >>> line.geom_type
    'LineString'

    Point

    class Point(coordinates)

    三种赋值方式

    >>> point = Point(0,0)
    >>> point_2 = Point((0,0))
    >>> point_3 = Point(point)

    一个点对象有area和长度都为0

    >>> point.area
    0.0
    >>> point.length
    0.0

    坐标可以通过coords或x、y、z得到

    >>> p = Point(2,3)
    >>> p.coords
    <shapely.coords.CoordinateSequence object at 0x7ffbc3d60dd0>
    
    >>> list(p.coords)
    [(2.0, 3.0)]
    >>> p.x
    2.0
    >>> p.y
    3.0

    coords可以被切片

    >>> p.coords[:]
    [(2.0, 3.0)]

    LineStrings

    LineStrings构造函数传入参数是2个或多个点序列

    一个LineStrings对象area为0,长度非0

    >>> line = LineString([(0,0), (0,1), (1,2)])
    >>> line.area
    0.0
    >>> line.length
    2.414213562373095

    获得坐标

    >>> line.coords[:]
    [(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]

      >>> list(line.coords)
      [(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]

    LineString依然可以接受一个同类型对象

    >>> line2 = LineString(line)
    >>> line2.coords[:]
    [(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]

    常见格式转换

    wkt: Well Know Text

    wkb: Well Kown Binary

    >>> Point(1,1).wkt
    'POINT (1 1)'
    >>> Point(1,1).wkb
    'x01x01x00x00x00x00x00x00x00x00x00xf0?x00x00x00x00x00x00xf0?'
    >>> Point(1,1).wkb.encode('hex')
    '0101000000000000000000f03f000000000000f03f'
    >>> 
    >>> Point(1,1).wkb.encode('hex')
    '0101000000000000000000f03f000000000000f03f'

    两者都有loads和dumps方法

    对于wkt

    >>> from shapely.wkt import dumps, loads
    >>> s = dumps(Point(1,2))
    >>> s
    'POINT (1.0000000000000000 2.0000000000000000)'
    >>> ss = loads(s)
    >>> ss
    <shapely.geometry.point.Point object at 0x7ffbc3d783d0>
    >>> ss.coords[:]
    [(1.0, 2.0)]

    对于wkb

    >>> from shapely.wkb import dumps, loads
    >>> s = dumps(Point(1,2), hex=True)
    >>> s
    '0101000000000000000000F03F0000000000000040'
    >>> ss = loads(s, hex=True)
    >>> ss
    <shapely.geometry.point.Point object at 0x7ffbc3d78790>
    >>> ss.coords
    <shapely.coords.CoordinateSequence object at 0x7ffbc3d783d0>
    >>> ss.coords[:]
    [(1.0, 2.0)]
  • 相关阅读:
    第八周进度条
    对老师的评价
    构建之法阅读笔记03
    构建之法阅读笔记02
    第七周进度条
    团队冲刺第二周07
    团队冲刺第二周06
    Java jdbc 连接oracle
    Java 生成验证码
    Oracle 触发器的简单命令
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/5711752.html
Copyright © 2020-2023  润新知