Daha çox

PostGIS> İki dairəni kəsişdirin. Hər Dairə Uzun / Lat dərəcələri və radiusdan inşa edilməlidir


Bunu anlamağa çalışıram, buna görə mütəxəssislərdən soruşmağa çalışmaq istədim.

Bu sual PostGIS (postgresql-dən) ilə əlaqədardır.

İstədiyim budur:

1) Uzunluq və enliyə əsaslanaraq bir nöqtəni proyektləşdirmək istəyirəm (lat və lonları bir Google xəritəsinə necə ötürə biləcəyinizə və sonra bir nöqtəni proqnozlaşdıracağınıza bənzər).

2) Radiusu olan bir dairə həndəsi yaradın. (Lat / Lon-un üfüqi dəqiqliyinə əsasən radiusu təyin edəcəyəm)

3) Sonra başqa bir Lat / Lon kombinasiyasına yenidən 1 və 2 etmək istəyirəm. Və bu iki dairənin toxunub-vuruşmadığına baxın.


Güman edirəm ki, nöqtə 2) üçün ST_GeomFromText kimi bir konstruktordan istifadə edə bilərdim, lakin iki kürə bucağına (lat / lon) əsaslanan tək bir nöqtəni necə proyeksiya edəcəyimi hələ başa düşmürəm.

Sonra 3-cü nöqtə üçün ST_Touches kimi bir şey istifadə edə biləcəyimi düşünürəm


Bu kodu problemin bir hissəsini həll etmək üçün göndərəcəyəm, çünki xəritə hissəsi ilə nə etməyə çalışdığınızı bilmirəm, amma burada:

ST_Touches (temp.point1, temp.point2) geom_touches olaraq SEÇİN, ST_Intersects (temp.point1, temp.point2) geom_intersect FROM (SELECT * FROM ST_Buffer (ST_Transform (ST_GeomFromText ('POINT (-105.05083, 43) ), 1500) point1 olaraq, ST_Buffer (ST_Transform (ST_GeomFromText ('POINT (-105.04428 39.74779)', 4326), 2877), 1500) point2 kimi) temp olaraq

Bu:
- ST_GeomFromText istifadə edərək hər ikisi də SRID: 4326-da müvəqqəti bir cədvəldə 2 həndəsə yaradın
- bu iki həndəsi ayaqları proqnozlaşdırılan bir koordinat sisteminə çevirin (əyalət müstəvisi Colorado)
- bu nöqtələri bir məsafədə (1500 fut) bufer edin
- toxunduqlarını və kəsişdiklərini yoxlamaq üçün xarici SQL ifadəsindən istifadə edin

Nəticələr belə görünür:

Həndəsələr belə görünür:


Videoya baxın: عدد دوائر العرض (Oktyabr 2021).