我也有一个点A在几何体内。我要做的是找到位于多边形几何体表面上的点A的两个最近点。
PostGIS中的函数:
CREATE OR REPLACE FUNCTION accuracyCheck(polygon geometry,decimal lat,decimal lon) RETURNS VARCHAR AS$BODY$DECLARE height DECIMAL;DECLARE accuracy VARCHAR(250);BEGIN CREATE TEMPORARY table closePointStorage ASSELECT ST_AsText(ST_ClosestPoint(geometry,ST_GeomFromText('POINT(lat lon)',0) ) ) AS closestPointFROM ( SELECT ST_GeomFromText(geometry) as geometry FROM gfe_geofences WHERE is_active=true ) As tempname;CREATE TEMPORARY table areaStorage ON COMMIT DROP ASSELECT ST_Area(ST_GeomFromText('polygon((23.0808622876029 96.1304006624291,28.0808622876029 99.1304006624291,100 200,23.0808622876029 96.1304006624291 ))',0) ) AS area;CREATE TEMPORARY table distanceStorage ON COMMIT DROP ASSELECT ST_distance( ST_GeomFromText('POINT(23.0808622876029 96.1304006624291)',-1),ST_GeomFromText('POINT(28.0808622876029 99.1304006624291)',-1) ) AS distance;height = (SELECT area FROM areaStorage) /(0.5*(SELECT distance FROM distanceStorage));IF height < (SELECT radius_meters FROM gfe_geofences Where is_active=true) THEN accuracy = "FullConfirm"; RETURN accuracy;ELSE accuracy = "PartiallyConfirm"; RETURN accuracy;END IF;END;$BODY$ LANGUAGE plpgsql;
我只想在多边形几何的边界上找到两个点。就像我从查询中找到一个:
CREATE TEMPORARY table closePointStorage ASSELECT ST_AsText(ST_ClosestPoint(geometry,0) ) ) AS closestPoint FROM ( SELECT ST_GeomFromText(geometry) as geometry FROM gfe_geofences WHERE is_active=true ) AS tempname;
其他然后这一点,我必须找到一个更多的距离大于然后点找到以上,但小于其余的点。
我假设你想找到通过最接近问题点的多边形的边缘为了从线[A,B]获得点’C’的距离’d’
首先翻译所有点,A为0,0
B -= A //vector subtractionC -= A
然后归一化B,使其长度为1.0
len = sqrt( B . B) //dotproduct of two vectors is the length squaredB /= len //scalar divIDe by length
从A找到与C成直角的长度
dotp = B . C //dot product againclosestPointOnline = B * dotp //scalar multiply
现在得到距离
diff = (C - ClosestPointOnline)d = sqrt(diff . diff)
不知道如何在sql中做到这一点。您将需要对多边形上的每个边做上述 *** 作,然后找到最小值’d’
顺便说一下,B和C的叉积的符号现在会告诉你点是否在多边形的内部
总结以上是内存溢出为你收集整理的postgresql – Postgis几何边界上的两个最近点全部内容,希望文章能够帮你解决postgresql – Postgis几何边界上的两个最近点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)