项目使用pyproj库进行对不同坐标系shapefile数据进行重新投影,具体实现形式是读取.prj文件,获取wkt定义的wkid,然后定影project投影函数,使用投影函数批量几何图形。
根据shapely官方文档 ,使用了pyproj库定义了投影函数进行几何处理,官网例子使用了pyproj 2.X以上版本。
import pyproj
from shapely.geometry import Point
from shapely.ops import transform
wgs84_pt = Point(-72.2495, 43.886)
wgs84 = pyproj.CRS('EPSG:4326')
utm = pyproj.CRS('EPSG:32618')
project = pyproj.Transformer.from_crs(wgs84, utm, always_xy=True).transform
utm_point = transform(project, wgs84_pt)
复制代码
pyproj库依赖proj库,根据pyproj官方文档指引,首先安装proj
- 下载32位或64位安装程序。
- 运行OSGeo4W安装程序。
- 选择 “高级安装 “并按下一步。
- 选择 “从互联网安装 “并按下一步。
- 选择一个安装目录。在大多数情况下,默认的建议是可以的。按 “下一步”。
- 选择 “本地软件包目录”。在大多数情况下,默认的建议是可以的。按下一步。
- 选择 “直接连接 “并按下一步。
- 选择download.osgeo.org服务器并按下一步。
- 在 “Commandline_Utilities “下找到 “proj”,点击 “New “栏中的软件包,直到出现你要安装的版本。
- 在 “Commandline_Utilities “下找到 “sqlite3″,点击 “New “栏中的软件包,直到出现你要安装的版本。
- 按下一步,安装PROJ。
注意上面第“11”点特别重要,如果不安装“sqlite3”,会在安装pyproj的时候提示“缺少sqlite3.dll”,官网文档缺少了这一步
安装好proj库之后,C盘目录会出现OSGeo4W文件夹,这里面是proj库的安装路径。
记得把 “C:\OSGeo4W\bin\”目录添加到系统环境路径下,否则会提示以下错误:
>>> import pyproj
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\ArcGIS10.3\lib\site-packages\pyproj\__init__.py", line 69, in <module>
from pyproj._list import ( # noqa: F401
ImportError: DLL load failed: 找不到指定的模块
复制代码
安装pyproj前在windows命令行上设定proj目录:
set PROJ_DIR=C:\OSGeo4W\
复制代码
下一步使用pip来安装PyPI上的库:
pip install pyproj
复制代码
最后在命令行进入python输入import pyproj确认是否成功安装:
import pyproj
复制代码
注意
直接import pyproj成功后,在运行调用了pyproj的py文件可能还会提示“ DLL load failed”,要把“C:\OSGeo4W\bin\”目录下的所有DLL文件拷贝到pyproj库的安装路径下(“C:\Python27\ArcGIS10.3\Lib\site-packages\pyproj\”)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END