Questions tagged «nearest-neighbor»

一种重新采样栅格数据的技术,其中使用输入栅格中最近的像元的值来计算输出栅格中每个像元的值。

1
使用GIST索引(<->函数)的Postgis 2.0中的最近邻居问题
我正在尝试使用Postgis 2.0新功能&lt;-&gt;(几何距离质心),以便为我的表格(cosn1)的每一行计算到同一类最近的多边形的距离。 我正在尝试使用以下代码: WITH index_query AS ( SELECT g1.gid As ref_gid, ST_Distance(g1.the_geom,g2.the_geom) As ENN FROM "cosn1" As g1, "cosn1" As g2 WHERE g1.gid &lt;&gt; g2.gid AND g1.class = g2.class ORDER BY g1.gid, g1.the_geom &lt;-&gt; g2.the_geom) SELECT DISTINCT ON (ref_gid) ref_gid, ENN FROM index_query ORDER BY ref_gid, ENN; 但是后来我意识到了警告: 注意:仅当其中一种几何形状为常数时,索引才会插入(不是在子查询/ cte中)。例如'SRID …

4
具有ST_Distance,kNN的PostGIS最近点
我需要在一个表上的每个元素上获取另一个表的最接近点。第一个表包含交通标志,第二个表包含城镇的入口大厅。事实是我不能使用ST_ClosestPoint函数,而必须使用ST_Distance函数并获取min(ST_distance)记录,但是我非常想建立查询。 CREATE TABLE traffic_signs ( id numeric(8,0) ), "GEOMETRY" geometry, CONSTRAINT traffic_signs_pkey PRIMARY KEY (id), CONSTRAINT traffic_signs_id_key UNIQUE (id) ) WITH ( OIDS=TRUE ); CREATE TABLE entrance_halls ( id numeric(8,0) ), "GEOMETRY" geometry, CONSTRAINT entrance_halls_pkey PRIMARY KEY (id), CONSTRAINT entrance_halls_id_key UNIQUE (id) ) WITH ( OIDS=TRUE ); 我需要获取每个traffic_sign中最接近的entrnce_hall的ID。 到目前为止我的查询: SELECT …

3
查找最近点的算法
我列出了几百个城市的纬度/经度。给定另一个位置(也是经度/纬度),我需要找到最近的城市。 由于我不使用任何GIS,因此到目前为止,显而易见的算法是对所有城市进行循环,以计算点之间的距离。 建立循环对我来说是切实可行的,但是有一些易于实现的算法可以更有效地完成该任务吗?还是一些可以帮助解决该问题的轻量级Java库? 注意:我不需要/不需要完整的GIS解决方案或繁杂的库。我更喜欢一个不太好但最简单,更轻松的解决方案,因为这是我唯一需要解决的问题。

1
寻找最接近的线段以定型使用?
背景 从一个已知的点开始,我需要针对MultiLineStrings表建立最近的周围“可见周长”,如图所示。 我在此站点上搜索了许多术语(例如,最小边,最小周长,最近的邻居,剪辑,包含多边形,可见性,捕捉,切割节点,光线跟踪,洪水填充,内部边界,路线,凹面船体),但是找不到与该场景匹配的任何先前问题。 图表 绿色圆圈是已知点。 黑线是已知的MultiLineStrings。 灰线表示从已知点开始的径向扫描。 红点是径向扫描和MultiLineStrings的最近交点。 参量 该点永远不会与MultiLineStrings相交。 该点将始终名义上位于MultiLineString中。 MultiLineString将永远不会完全包围该点,因此周长将为MultiLineString。 将有一个包含大约1,000个MultiLineString的表(通常包含大约100点的单行)。 考虑的方法 通过从已知点构造一系列线(例如,以1度为增量)进行径向扫描。 用MultiLineStrings建立每个径向扫掠线的最近交点。 当一条径向扫掠线不与任何MultiLineString相交时,这将指示周长中的间隙,该间隙将容纳在周长MultiLineString结构中。 摘要 尽管此技术将找到最接近的相交点,但不一定要找到所有最接近的周界节点,这取决于径向扫描的分辨率。谁能推荐一种替代方法来建立所有周界点,或以某种形式的缓冲,扇形或偏移来补充径向扫描技术? 软件 我的首选是使用SpatiaLite和/或Shapely作为解决方案,但是欢迎可以使用开源软件实现的任何建议。 编辑:工作解决方案(基于@gene的回答) from shapely.geometry import Point, LineString, mapping, shape from shapely.ops import cascaded_union from shapely import affinity import fiona sweep_res = 10 # sweep resolution (degrees) focal_pt = Point(0, 0) …

3
在SQL Server 2008上的7000万点云上优化最近邻居查询
我在SQL Server 2008 R2 Express数据库中有大约7500万条记录。每个都是对应某个值的纬度。该表具有“地理位置”列。我正在尝试为给定的经度(点)找到一个最近的邻居。我已经有一个具有空间索引的查询。但是根据记录在数据库中的位置(例如第一季度或最后一个季度),查询可能需要3到30秒才能找到最近的邻居。我认为可以通过优化查询或空间索引来优化此方法,以得到更快的结果。现在,使用默认设置应用了一些空间索引。这是我的表和查询的样子。 CREATE TABLE lidar( [id] [bigint] IDENTITY(1,1) NOT NULL, [POINTID] [int] NOT NULL, [GRID_CODE] [numeric](17, 8) NULL, [geom] [geography] NULL, CONSTRAINT [PK_lidar_1] PRIMARY KEY CLUSTERED ([id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) …

3
最近邻图像重采样在ArcGIS中如何工作?
我试图了解用于重新采样图像数据集的最近邻居在ArcGIS中的工作方式。 输出栅格像元值是输入栅格中最接近的像元值的值: 在这种情况下,每个输出像元的中心是每个3x3输入像元的中间像元。 如果它们都在相同的距离会怎样?如果输出的尺寸为输入尺寸的一半,则输出的中心到最接近的4个相邻输入单元的距离相同。 InRas1=6x6 OutRas=3x3 他获得了大多数的细胞价值?没有 还是我在这里想念什么?

6
PostGIS:将A层中的点的ID分配给B层中的最近点
这应该是另一个问题的显而易见的先驱(我没有问过): 如何在PostGIS中创建蜘蛛图(集线)? 如果我不知道A层中的一个点(商店)和B层中的一个点(客户)之间的关系,我通常要说“最近的商店为客户1提供服务”。虽然我意识到这个事实可能并非如此,但它可能是一个不错的替代品。 使用PostGIS,最有效的方法是将A层(商店)中最近的点的ID分配给B层(客户)中的每个点。我正在寻找的输出如下所示。 Customer | Store 1 | A 2 | A 3 | B 4 | C

3
使用PostGIS优化最近邻计算
我正在使用PostGIS计算多边形的最近邻居。我要计算的是从每个多边形到最近的多边形的最小距离。 到目前为止,我在这里得到了Mike Toews的答案的帮助(我引用了一个小的更改): SELECT a.hgt AS a_hgt, b.hgt AS b_hgt, ST_Distance(a.the_geom, b.the_geom) AS distance_between_a_and_b FROM public."TestArea" AS a, public."TestArea" AS b WHERE a.hgt != b.hgt AND ST_Distance(a.the_geom, b.the_geom) &lt; 400 然后,我计算出最小值: SELECT a_hgt, MIN(distance_between_a_and_b) FROM public."lon_TestArea" GROUP BY a_hgt 但是,我的挑战是为大量的多边形(1,000,000)计算此值。当上述计算将每个多边形与其他每个多边形进行比较时,我想知道如何改进计算,从而不必执行10 ^ 12的计算。 我曾经想过要缓冲每个多边形,然后计算该多边形的缓冲区中所有值的最近邻居,并记录下最小值。我不确定这是最好的方法,还是不确定我应该使用的PostGIS功能。 编辑:使用尼克拉斯的建议之一,我正在尝试ST_Dwithin(): CREATE TABLE mytable_withinRange AS SELECT a.hgt …


2
计算多边形和沿路径的点之间的距离
我是ArcGis的新手,正在尝试弄清楚该如何做。 基本上,这就是我想要做的: 我有一张加拿大地图,其中有代表区域的多边形(每个都与城市的大小有关)。我还指出了加拿大每个机场的位置以及整个加拿大的道路网。我需要做的是找出使用道路从每个区域到最近的机场的距离。 我已经尝试做的是找到每个多边形的质心,因为我认为我可以用它来计算沿道路的两个点之间的距离。但是后来我意识到,形心不一定与道路相连(特别是在加拿大北部),因此我不能使用它。 我真的很希望能获得某种指导,因为我是ArcGIS的新手,并且在网上没有太多帮助(不会使我感到困惑)。

1
如何有效地找到日期线上的最近点?
我有一个带有成千上万个PostGIS POINT的PostgreSQL 9.1表。对于这些,我想在另一个POINT表中找到最接近的点。第二张表中的点代表整个世界上的网格,因此我知道总会有1度以内的匹配。这是我到目前为止使用的查询,它利用了GIST索引,因此相当快(总计约30秒)。 SELECT DISTINCT ON (p.id) p.id, ST_AsText(p.pos) , ST_AsText(first_value(g.location) OVER (PARTITION BY p.id ORDER BY ST_Distance(p.pos, g.location::geography))) FROM point p JOIN grid g ON ST_DWithin(p.pos::geometry, g.location, 1) 唯一的问题是时间表。网格点的纬度只有180,而不是-180。使用ST_Distance的几何版本时,这不会在日期线的另一侧返回点。例如。如果p.pos是POINT(-179.88056 -16.68833)最近的网格点,可能是POINT(180 -16.25),但是上面的查询没有返回它。解决此问题的最佳方法是什么? 我真的不希望单个网格点具有两个坐标(-180和+180)。我尝试添加自己的函数来检查这种特定情况,但随后查询在5分钟内未返回,可能是因为它无法再使用索引。我还尝试使用地理版本的ST_DWithin,并且该查询在5分钟后也没有返回。

4
在SpatiaLite中找到具有点位置的两个表之间的最近邻居?
我今天开始与SpatiaLite玩,已经偶然发现了一个问题。 对于tableOne中存储的每个点位置,我想从tableTwo中选择一个最近的(线性距离)点。 到目前为止,我想出了一个使用VIEW的笨拙解决方案: CREATE VIEW testview AS SELECT A.id , B.myValue, Distance(A.Geometry, B.Geometry) AS distance FROM tableOne AS A, tableTwo AS B WHERE distance &lt; 10000 ORDER BY A.Id, distance; 然后: SELECT * FROM testview WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id) 似乎能胜任。 两个问题: …

1
使用PostGIS查找给定2点的最近线?
我有一个表t,其中包含一列line_positionsline类型的列。给定2个点,我想找到最接近的直线,该直线足够接近(小于10公里)并且距离我想要避免的点(最小20公里)的距离不太远。目前我使用 SELECT t.* FROM path t WHERE ST_DWithin(ST_GeographyFromText('Point(69.835 22.596)'), t.line_positions, 10000, FALSE) AND ST_DWithin(ST_GeographyFromText('Point(69.856 22.519)'), t.line_positions, 10000, false) AND NOT ST_DWithin(ST_GeographyFromText('Point(-79.804 9.141)'), t.line_positions, 20000, false) ORDER BY ST_Distance(ST_GeographyFromText('Point(69.835 22.576)'), t.line_positions, false) + ST_Distance(ST_GeographyFromText('Point(69.856 22.519)'), t.line_positions, false) ASC LIMIT 1 ix_path_line_positionsline_positions列上有一个要点索引。 它有效,但速度很慢,在t中仅100000行在3s到30s之间。 解释分析给出: Limit (cost=9.95..9.95 rows=1 width=1432) (actual time=21729.253..21729.254 rows=1 loops=1) …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.