计算从起点到终点的测地线,并将其存储在gis文件(shapefile和geojson)中。解决了测地线穿越反电离层的问题。

GeodesicLinesToGIS的Python项目详细描述


https://travis-ci.org/GeographicaGS/GeodesicLinesToGIS.svg?branch=master

计算从起点到终点的测地线并将其存储在 地理信息系统文件(shapefile和geojson)。测地线是最短的路径 在曲面上的两点之间,如旋转椭球体 (Read more on Wikipedia)。

此代码构建在三个库之上:pyproj、fiona和 很漂亮。

有几个库可以计算测地线距离 反问题(寻找两点之间的最短路径)。 我之所以选择pyproj,是因为它可以很好地实现这一目的,并且是 地理空间工业中广泛使用的库(proj4 c库)。实际项目4 C 用于计算测地线距离的库(>;=v.4.9.0)例程是一个简单的转录 来自Charles Karney开发的优秀地理库C++文库。proj4 c库<;v.4.9.0 使用paul d.thomas算法。你可以在这里看到更多关于这个的信息: GeodeticMusings: a little benchmark of three Python libraries to compute geodesic distances

所有计算都是用wgs84椭球和crs进行的。 (坐标参考系)地理信息系统文件输出为EPSG:4326。

在示例部分,您可以看到计算行的问题 解决了交叉反间谍。

numpy数组支持作为输入数据。

测地线示例

下面显示了使用此库计算的不同测地线 几个地图投影。你也可以看到与伦布线的关系 (loxodromic)和相同点之间的直线:

https://github.com/GeographicaGS/GeodesicLinesToGIS

用法

用法很简单。有两种模式: -单输入(一个 开始/结束)。 -多个输入(多个开始/结束)。

单输入

单一输入用法。

fromgeodesiclinestogisimportGeodesicLine2Gisfile

lons_lats:输入坐标。(开始经度,开始纬度,结束 经度,结束纬度)

lons_lats=(-3.6,40.5,-118.4,33.9)

存储输出文件和文件名的文件夹路径:

folderpath='/tmp'layername="geodesicline"

创建对象。可以传递两个参数: -anteridian:[true,false]用于解决anteridian问题(默认为true)。 -打印:[true,false]打印输出消息(默认为true)。

gtg=GeodesicLine2Gisfile()

启动计算。可以传递两个参数: -lons_lats:gccomp返回的输入坐标。 -公里/分:每N公里计算一个点(默认为20公里)

cd=gtg.gdlComp(lons_lats,km_pts=30)

将测地线坐标转储到线串要素并存储在地理信息系统文件中。

输出格式:“esri shapefile”(默认)、“geojson”

# shapefile outputgtg.gdlToGisFile(cd,folderpath,layername)# geojson outputgtg.gdlToGisFile(cd,folderpath,layername,fmt="GeoJSON")

多输入

多输入用法。

fromgeodesiclinestogisimportGeodesicLine2Gisfiledata=[(-6.,37.,-145.,11.),(-150.,37.,140.,11.),(-6.,37.,120.,50.),(-3.6,40.5,-118.4,33.9),(-118.4,33.9,139.8,35.5),(-118.4,33.9,104.,1.35),(-118.4,33.9,151.,-33.9),(-20.4,33.9,178.,-33.9)]folderpath="/tmp/geod_line"layername="geodesicline"gtg=GeodesicLine2Gisfile()gtg.gdlToGisFileMulti(data,folderpath,layername)

numpy数组(多个)输入

numpy数组输入用法。

importnumpyasnpfromgeodesiclinestogisimportGeodesicLine2Gisfiledata_=[(-6.,37.,-145.,11.),(-150.,37.,140.,11.),(-6.,37.,120.,50.),(-3.6,40.5,-118.4,33.9),(-118.4,33.9,139.8,35.5),(-118.4,33.9,104.,1.35),(-118.4,33.9,151.,-33.9),(-20.4,33.9,178.,-33.9)]data=np.array(data_)folderpath="/tmp/geod_line_np"layername="geodesicline"gtg=GeodesicLine2Gisfile()gtg.gdlToGisFileMulti(data,folderpath,layername)

关于作者

由Cayetano Benavent开发。地理信息系统分析师。

http://www.geographica.gs

许可证

这个程序是免费软件;你可以重新发布和/或修改它 根据 自由软件基金会;许可证的版本2,或者 选项)任何更高版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从服务器中的jsp页面读取参数   java构造函数会话(字符串,int)不可见   在java中计算特定字符,但我的程序只读取单词中的第一个字符   在java中转换为json的Hashmap的Hashmap。当发送到jsp时,我用javascript解析它。但它在javascript中的解析不正确   JavaSpringDataREST并没有保存实体的所有字段   java如何通过inten共享图像   eclipse是Java所需要的。即使已定义,也要运行的类文件   rest MapStruct Java流   java在OpenJDK 11的源代码上运行DocumentationTool   比较两个ArrayList索引时的java IndexOutOfBoundsException   java为什么Spring验证器需要将错误对象传递给应用程序(富客户端)并由其处理?   java Android从sms垃圾邮件文件夹或列表中检索垃圾邮件号码   java从匿名类参数访问类的实例   java MethodHandle与通用非类返回筛选器?   指定队列顺序的java