当前位置: 首页 > 知识库问答 >
问题:

(PostGIS)基于多线串几何合并两个表

吕鸿文
2023-03-14

我对PostGIS(和一般数据库)完全陌生,因此如果我使用术语不正确,请道歉。

我有两个带有多线串几何的表,我想根据几何将一个字段从一个表复制到另一个表。几何不重叠,所以我想找到最接近的几何。我试过谷歌搜索,并找到了很多尝试的方法(ST_DISTANCE等),但是查询总是返回错误的结果(在地图上检查之后)。

e. g. g.

表1有要复制的字段,表2没有。我想遍历表2中的所有记录,并在表1中找到最接近的记录,然后复制一个字段。

很抱歉,如果我的描述不清楚,我发现很难把它放在一个清晰的句子中(这让谷歌搜索很难)。如果有人能帮忙,或者至少给我指出正确的方向,我会非常感激。理想情况下,我希望使用SELECT语句检查结果,然后使用INSERT(或类似语句)更新表,或者可能创建第三个“联接”表。

我一直在使用PGAdmin和QGIS。

谢谢,

共有1个答案

年嘉禧
2023-03-14

您可以使用如下方式创建第三个连接表:

CREATE TABLE joined_table (id1 int, id2 int) AS
SELECT DISTINCT ON(table1.id)  table1.id, 
table2.id
FROM table1, table2
WHERE table1.id <> table2.id 
ORDER BY  table1.id, ST_Distance(table1.the_geom,table2.the_geom) 

如果速度太慢,您可以添加以下内容来限制结果

AND ST_DWithin(table1.the_geom, table2.the_geom, 300)  

到where条件。

您可以在此处找到解决方案的更好描述http://www.bostongis.com/?content_name=postgis_nearest_neighbor

以及有关堆栈溢出的类似问题 这里 https://gis.stackexchange.com/questions/3249/postgis-assign-id-of-point-in-layer-a-to-closest-point-in-layer-b

这里https://gis.stackexchange.com/questions/155373/postgis-nearest-point-with-lateral-join-in-postgresql-9-3

 类似资料:
  • 我有两个数组: 阵列 1: 和阵列 2: 我需要根据合并这两个数组并得到这个: 不通过< code>Object.keys进行迭代,我如何做到这一点?

  • 问题内容: 我有两个不同的Google Spreadsheet: 一列四列 其中一个包含上一个文件的4列,另外2列 我在Google BigQuery中将它们配置为联合源,现在我需要创建一个将两个表的数据连接在一起的视图。 两个表都有一列,其中包含一个ID,此ID在所有表中都是唯一的,不包含复制的数据。 我要查找的结果表如下: 对于第一个文件没有的列,我期望有一个值。 我正在使用standardS

  • 我需要执行一些任务。有些任务是独立的,有些任务依赖于其他任务的成功执行。独立任务可以并行运行以获得更好的性能。我把这些任务称为服务。列说明哪些服务将以串联方式执行,哪些服务将以并联方式执行。列描述了一组定义的服务所遵循的执行顺序。例如,服务A和B应该并行运行。如果它们已成功执行,则将执行服务C。请注意,服务C并不直接依赖于其先前服务的输出,但它必须在成功执行其先前服务后运行,因为服务C在执行期间需

  • 我有2个数据帧: 谢谢!

  • 我在这个表中存储了一些几何图形(140k) CREATE TABLE缓冲区(pk整数NOT NULL,geom几何体(MultiPolygon,4326),) 我想(如果可能的话)创建一个新表(buffersmerged),该表将包含生成的几何图形,其中预览在彼此相交时进行分组。 我预期的输出,就像在QGIS中使用缓冲区工具检查“溶解缓冲区结果”时一样,但我希望,而不仅仅是一个大的独特几何作为输出

  • 我试图在GeoPandas中找到两个多边形的并集,并输出一个包含两个多边形的点作为其顶点的单个几何体。函数为每个单独的并集提供多边形,但我想要一个多边形。 在上下文中,我使用它将两个行政区域合并为一个区域(即包括一个国家内的一个城镇区)。 下面的例子来自geopandas网站,说明了我想要的: 没有一个输出几何是我所期望的,这是以下内容: 首先,如何使用GeoPandas或shapely从输入多边