testpyproj.py 1.3 KB

1234567891011121314151617181920212223242526272829
  1. from pyproj import Transformer
  2. # 点坐标转换 将地理坐标系转换为平面坐标系
  3. transformer = Transformer.from_crs("epsg:4490", "epsg:4528", always_xy=True)
  4. point = [116, 30]
  5. r1 = transformer.transform(point[0], point[1])
  6. print(r1, type(r1)) # (40113896.976026766, 3326859.0907140267) <class 'tuple'>
  7. # 点坐标转换 将平面坐标系转换为地伦理坐标系
  8. transformer1 = Transformer.from_crs("epsg:4528", "epsg:4490", always_xy=True)
  9. r2 = transformer1.transform(r1[0], r1[1]) # (40113896.976026766, 3326859.0907140267)
  10. print(r2, type(r2)) # (116.00000000000004, 29.999999999999996) <class 'tuple'>
  11. # 转换面图形
  12. from shapely.ops import transform
  13. from shapely import wkt
  14. from shapely import Polygon
  15. polygon1 = wkt.loads(
  16. 'POLYGON((119.757825964 29.994700644,119.757759991 29.994631079,119.757664084 29.994699986,119.757689324 29.994726602,119.757730057 29.994769558,119.757768634 29.994741839,119.757825964 29.994700644))')
  17. # 1 使用shapely.ops的转换方法
  18. transPolygon1 = transform(transformer.transform, polygon1)
  19. print(transPolygon1)
  20. # 2 手动遍历转换
  21. print(polygon1.exterior.coords)
  22. transform_coords = [transformer.transform(lon, lat) for lon, lat in polygon1.exterior.coords]
  23. print(transform_coords)
  24. transform2 = Polygon(transform_coords)
  25. print(transform2)