V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  liuguangxuan  ›  全部回复第 27 页 / 共 38 页
回复总数  748
1 ... 23  24  25  26  27  28  29  30  31  32 ... 38  
@a90120411 #28 老哥可否留个联系方式,以后有问题好向您请教。😂
@a90120411 #26 明白啦,老哥。非常感谢指点。
@a90120411 #24
感谢老哥的回复。

我也看了官方的那个函数文档,您的分析是正确的。

可能我没有表述清楚,不好意思哈。老哥。

我想实现的有两个:
需求一、给定传入的范围(多边形),求多边形区域内的轨迹。就是与多边形相交,而且在多边形区域内的部分。
需求二、给定传入的范围(多边形),求与多边形相交的轨迹,但是不在多边形内的部分。

其中需求一比较好实现:
使用 ST_Intersection(),直接就能求出来;

需求二呢:
您的分析是正确的,我也看到了官方的文档,我目前也是按照您说的两步来实现的:
1 、先使用 ST_Crosses(),求出和传入范围(多边形)相交的线数据量集;
2 、再使用 ST_Difference(),得到与多边形相交的轨迹,但是不在多边形区域内的部分。

但是感觉实现需求二这种方法比较麻烦,PostGIS 有没有现成的函数一步完成这个操作啊,老哥?
@a90120411 #21 https://i.imgur.com/ZLshRKJ.png
最右侧那个直线,跟矩形区域没有任何相交,但是还是查出来了。
@a90120411 #21 表中存的不是 MULTILINE ,每个都是一个 LineString 。我是这么写的,其中 gj 字段是 LineString 类型。

```
select ST_Difference( t.gj, ST_PolygonFromText('POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))', 4326)) from test1 t;
```
@a90120411 #19 https://i.imgur.com/kNVdeoZ.png

1 、交集没问题,一切正常。

2 、但是差集的话,会把旁边的那条无关的线也返回。我想实现只返回有交集的线的差集。😂
@a90120411 #16 https://i.imgur.com/H96ThpZ.png
多谢老哥回复。

再请教一下老哥,如图所示,一个 Polygon 和一个 LineString:
1 、我想求相交区域(绿色部分)的线,应该用哪个函数啊?
2 、我想求非相交区域(红色部分)的线,应该用哪个函数啊?
@a90120411 #7 老哥,我现在用点生成线了。

但是我如何查询在指定区域(Polygon)内的线(geometry(LineString))呢?即部分包含的线。

我使用 ST_contains 、st_intersects 函数都查不出来。
2022-05-24 10:51:31 +08:00
回复了 bruce0 创建的主题 程序员 你们都是在哪里 学习技术和交流问题的
同样也有这个疑问。但是也没有找到比较好的平台。

最近刚发现 reddit 上面有个 cpp 板块(英文的),OP 也可以上去看看。
换了一台性能比较好的服务器,再加上二次查询的原因,可能内存中有缓存,所以现在比较快,大约 64°*64°的区域,在 6~7 秒左右,老哥还有没有优化的方法?

https://i.imgur.com/TaGNvey.png
@beginor #6 老哥,我大概按你的方法测试了一下,分别测试了 st_contains 、st_intersects 、&&在不同索引( gist,sp-gist )下的查询情况,并且换了一台服务器。每次测试均重启了服务器。

总体而言,gist 索引性能好于 sp-gist 索引,首次查询 st_intersects 性能比较好,第二次查询&&性能比较好。

测试结果和老哥说的有点儿出入,能不能帮忙解答一下原因,还是我测试的方式不太对?

https://ww1.sinaimg.cn/large/8cc20a75gy1h2alf3tmnej20wj05j3z4.jpg
@nuistzhou #1 如果单看返回条数的话,使用 select count(*),时间也差不太多。
@nuistzhou #1
@beginor #2
老哥,经纬度索引列,应该是没问题,类型为 geometry(Point),我用\d tablename ,能查到索引。只是建立索引的时候没有添加编码 4326 ,请问这个影响大吗?

另外可能和我测试环境的配置有关系,我用的是腾讯云 2 核 8G 内存,PostgreSQL 的配置文件保持默认的设置。

提高服务器硬件资源配置是一方面,老哥可否指点一下其它提高查询性能的方法。
2022-05-14 08:39:26 +08:00
回复了 v2eb 创建的主题 问与答 mysql 根据经纬度检索排序的问题
@v2eb #17
@dzdh #18 不需要全部都展示出来。

我的需求跟 OP 的有点儿类似,都属于地理空间查询。但是我可能比 OP 多了一些其它的字段属性,比如高度,速度,老哥们可以理解为飞机的轨迹,我不太需要关注每个实时的点,我更关注飞机的整体航迹。然后在地图上快速的从 1 亿个点里面把飞机的整体轨迹筛选出来。老哥们有没有比较快速的办法?
2022-05-13 20:46:03 +08:00
回复了 v2eb 创建的主题 问与答 mysql 根据经纬度检索排序的问题
@dzdh #14 老哥,在这里 E 是个什么单位?

另外我用 PostgreSQL+PostGIS 测试了一下,随机在经度(-180°~180°),纬度(-90°~90°)生成 1 亿个点,查询 32°*32°的矩形区域,搜索出来的点数大约为 150 万个,耗时需要 15 分钟。这个属于正常的吗?有没有什么优化手段可以把查询时间降下去?
@adoal #24 感谢老哥回复,有理有据。现在已逐步放弃了打包的想法了。😂
@Chipmunker #18 感谢老哥,发的这个链接,感觉里面思路有点儿清奇,是个办法。

但是我想做的其实就是你说的第一步,“首先按照预设运行平台,使用 cmake 中的 cpack 来生成对应平台的包( rpm, deb )”,我想实现的是 cmake 自动能识别平台,比如为 CentOS 或者 Ubuntu ,然后分别达成 rpm 包,或者 deb 包。老哥有没有推荐的教程啊?
@adoal #16 检测发行版的目的:有的用户是 CentOS ,有的是 Ubuntu ,所以有了想检测发行版的想法。最初的想法打包时检测,分别打成不同的包,CentOS 的用户就给 rpm 包,Ubuntu 用户就给 deb 包。

rpm 的 spec 我研究了一下,好像最终是使用 rpmbuild 来打包,debian 的 rules 还没来得及研究。

关于打包目的和在公司的角色:我在公司是开发,因为人手不够,所以兼顾运维、写文档等等。至于公司的 IT 基建环境,可以说为 0 ,没有任何规范,一切都靠自己,所以只能摸索前进。我看到很多开源的工具都提供 rpm 包,就想着这个可能就是发布程序的最佳实践,就想学习一下,然后应用到公司以后发布程序中。

另外没有进过大厂,也不知道大厂的分工,这是我第一次听基建这个词,老哥能否介绍一下大厂的各个部门,以及各个部门的职责。
@Chipmunker #11 感谢老哥回复,我第一反应也是用 cmake 的 cpack 打包,但是没有找到检测 Linux 发行版的方法,最后用的是读取`/etc/os-release`文件,根据关键字来判断。

打成 rpm 包,并配合 systemd 参考的是 https://github.com/andrew-hardin/cpack-systemd-demo 这篇教程,但是没有找到同时兼顾 Linux 多种发行版的打包教程,老哥能否指点一下,给个用 cmake 打包,配合 systemd ,同时兼顾不同发行版的优雅点儿的方式或者教程?
1 ... 23  24  25  26  27  28  29  30  31  32 ... 38  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5424 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 07:23 · PVG 15:23 · LAX 23:23 · JFK 02:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.