几何对象

  • 点:object表示空间中的单个点。点可以是二维(x,y)或三维(x,y,z)。
  • 线:表示连接在一起形成一条线的一系列点。因此,一行包含至少两个坐标元组的列表
  • 面:表示填充区域,该区域由至少三个形成外环的坐标元组列表和一个(可能的)多边形列表组成。
  • 多点:表示一组点,由一系列坐标元组组成
  • 多线:表示一组行,由一系列行序列组成
  • 多面:表示多边形的集合,该多边形由一系列多边形序列组成,这些序列由外环和(可能的)孔列表元组构成

  点

    创建一个点:

      from shapely.geometry import Point, LineString, Polygon # 首先导入第三方包shapely
      point1 = Point(2.2, 4.2)
      point2 = Point(7.2, -25.1)
      point3 = Point(9.26, -2.456)
      point3D = Point(9.26, -2.456, 0.57) # 创建了四个点,前三个是二维点,第四个为三维点
    我们可以使用print()开查看一下点
      print(point1)      # POINT(2.2 4.2)
      print(point3D) # POINT Z(9.26 -2.456 0.57)
      print(type(point1)) # <class 'shapely.geometry.point.Point'>
    提取坐标点的X,Y坐标
      x = point1.x #将point1的x坐标赋给x
      y = point1.y #将point1的y坐标赋给y
      xy = point_coordinates.xy # 输出的结果为 (array('d',[2.2]),array('d',[4.2]))
    我们还可以直接计算已经定义好的两个点的距离
      distance = point1.disatance(point2)
      print('Distance between the points is {0:.2f} decimal degrees'.format(distance)) # 将point1点和point2点的距离算出赋给distance,并且输出  线  

  线

    创建线的两种方法

      line = LineString(piont1,point2,point3)   # 将已知的三个点作为线

      line2 = LineString([(2.2,4.2),(7.2,-25.1),(9.26,-2.456)])   #根据已知的线点坐标作为线

    我们也可以提取线上点的坐标
      line.xy #
输出的结果为 (array('d',[2.2,7.2,9.26]),array('d',[4.2,-25.1,-2.456]))
      
line.xy[0] # 输出线上点的x坐标
    
  line,xy[1] # 输出线上点的y坐标
    我们可以查询线的长度,中心点
      line.lenght # 长度
      line.centroid # 中心点

   面

    创建面的两种方法

      poly = Polygon([(2.2, 4.2), (7.2, -25.1), (9.26, -2.456)])    #将已知的三个点作为面

      poly2 = Polygon([[p.x, p.y] for p in [point1, point2, point3]])   

    创建一个内部有孔的面

      world_exterior = [(-180, 90), (-180, -90), (180, -90), (180, 90)]

      hole = [[(-170, 80), (-170, -80), (170, -80), (170, 80)]]

      world = Polygon(shell=world_exterior)

      world_has_a_hole = Polygon(shell=world_exterior, holes=hole)

    可以提取面的中心点,面积,边界,外观 和外观长度

      world.centroid   # 中心点

      world.area        #面积

      world.bounds   #边界

      world.exterior  #外观

      world.lenght    #外观长度

   多点,多线,多面

    创建多点,多线,多面

     from shapely.geometry import MultiPoint, MultiLineString, MultiPolygon, box          # 导入第三方包

     multi_point = MultiPoint([point1, point2, point3])

     multi_point2 = MultiPoint([(2.2, 4.2), (7.2, -25.1), (9.26, -2.456)])     #创建多点的两种形式

     line1 = LineString([point1, point2])

        line2 = LineString([point2, point3])

     multi_line = MultiLineString([line1, line2])                      #创建多线

     west_exterior = [(-180, 90), (-180, -90), (0, -90), (0, 90)]

     west_hole = [[(-170, 80), (-170, -80), (-10, -80), (-10, 80)]]

     west_poly = Polygon(shell=west_exterior, holes=west_hole)   #创建面

     min_x,mix_y = 0,-90 

     max_x,max_y = 180,90

     east_poly_box = box(minx=min_x, miny=min_y, maxx=max_x, maxy=max_y)   #创建面

     multi_poly = MultiPolygon([west_poly, east_poly_box])     #创建多面

    多点,多线,多面的一些属性

      convex = multi_point.convex_hull     #  以多点创建多边形

      lines_count = len(multi_line)             #  计算多线的条数

      multi_poly_area = multi_poly.area    #  计算多面的面积

      west_area = multi_poly[0].area         #  计算多面中第一个面的面积

 

posted on 2019-04-04 14:48  睿子4  阅读(240)  评论(0)    收藏  举报