asa*_*afm 9 python gis performance polygon great-circle
我在寻找python的地理库.我需要能够做到以下几点:
一开始我看了这篇文章: Python模块用于存储和查询地理坐标并开始使用geopy.我遇到了两个问题:
我一直在寻找并发现最佳Python GIS库?和https://gis.stackexchange.com/.它看起来很有希望因为地理位置使用的是编译的C代码,它应该更快,并且可以更好地支持多边形.问题是geos/OGR执行线性距离计算而不是球体.这消除了所有其他基于地理的模块(如GEODjango和形状).我在这里错过了什么吗?我不认为我是第一个使用python进行GIS计算并希望获得准确结果的人.
更新
现在继续完成该库中的其他 576 个函数,不包括已完成的两个多边形函数、已完成的三个球体距离算法以及两个新函数:angle_box_2d 和 angle_contains_ray_2d。另外,我切换到 C 版本,这样就不需要 extern,简化了工作。将旧的 C++ 版本放在 old_c++ 目录中,因此它仍然存在。
经过测试的性能,它与答案底部列出的相同。
更新2
所以只是一个快速更新,我还没有完成整个库(我只完成了大约 15%),但我已经在 github 上添加了这些未经测试的函数,以防万一您立即需要它们添加到多边形和球体距离算法中的旧点。
angle_box_2d
angle_contains_ray_2d
angle_deg_2d
angle_half_2d # MLM: double *
angle_rad_2d
angle_rad_3d
angle_rad_nd
angle_turn_2d
anglei_deg_2d
anglei_rad_2d
annulus_area_2d
annulus_sector_area_2d
annulus_sector_centroid_2d # MLM: double *
ball_unit_sample_2d # MLM: double *
ball_unit_sample_3d # MLM: double *
ball_unit_sample_nd # MLM; double *
basis_map_3d #double *
box_01_contains_point_2d
box_01_contains_point_nd
box_contains_point_2d
box_contains_point_nd
box_ray_int_2d
box_segment_clip_2d
circle_arc_point_near_2d
circle_area_2d
circle_dia2imp_2d
circle_exp_contains_point_2d
circle_exp2imp_2d
circle_imp_contains_point_2d
circle_imp_line_par_int_2d
circle_imp_point_dist_2d
circle_imp_point_dist_signed_2d
circle_imp_point_near_2d
circle_imp_points_2d # MlM: double *
circle_imp_points_3d # MLM: double *
circle_imp_points_arc_2d
circle_imp_print_2d
circle_imp_print_3d
circle_imp2exp_2d
circle_llr2imp_2d # MLM: double *
circle_lune_area_2d
circle_lune_centroid_2d # MLM; double *
circle_pppr2imp_3d
Run Code Online (Sandbox Code Playgroud)
我上面评论的那些可能行不通,其他的可能行不通,但同样 - 多边形和球体距离肯定行。您可以指定米、公里、英里、海里,这对于球面距离并不重要,输出的单位与输入的单位相同 - 算法与单位无关。
我今天早上把它放在一起,所以它目前只提供多边形中的点、凸多边形中的点和三种不同类型的球面距离算法,但至少您要求的那些现在可供您使用。我不知道是否与任何其他 python 库存在名称冲突,这些天我只是外围地参与了 python,所以如果有更好的名称,我愿意接受建议。
在 github 上:https: //github.com/hoonto/pygeometry
它只是一个连接此处描述和实现的函数的 Python 桥梁:
http://people.sc.fsu.edu/~jburkardt/cpp_src/geometry/geometry.html
GEOMETRY 库实际上非常好,所以我认为为 python 桥接所有这些函数会很有用,我今晚可能会这样做。
编辑:其他一些事情
如果您在 Windows 上确实需要此功能,请告诉我,在 Visual Studio 中只需几分钟即可完成。但除非有人问,否则我可能会暂时不管它。
希望这可以帮助!
Rgds....Hoonto/马特
(新提交:SHA:4fa2dbbe849c09252c7bd931edfe8db478de28e6 - 修复了一些问题,例如弧度转换以及 py 函数的返回类型。还添加了一些基本性能测试以确保库正常运行。)
测试结果 在每次迭代中,一次调用 sphere_distance1,一次调用 Polygon_contains_point_2d,因此总共调用 2 次库。
| 归档时间: |
|
| 查看次数: |
3011 次 |
| 最近记录: |