簡體   English   中英

獲取多邊形點mysql

[英]Get polygon points mysql

我在 mysql 中創建了一個表來存儲多邊形數據:

CREATE TABLE geom (g GEOMETRY);

我使用以下語法在其中插入了一個多邊形:

INSERT INTO geom (g)
VALUES(PolygonFromText('POLYGON((
9.190586853 45.464518970,
9.190602686 45.463993916,
9.191572471 45.464001929,
9.191613325 45.463884676,
9.192136130 45.463880767,
9.192111509 45.464095594,
9.192427961 45.464117804,
9.192417811 45.464112862,
9.192509035 45.464225851,
9.192493139 45.464371079,
9.192448471 45.464439002,
9.192387444 45.464477861,
9.192051402 45.464483037,
9.192012814 45.464643592,
9.191640825 45.464647090,
9.191622331 45.464506215,
9.190586853 45.464518970))')
);

現在我怎樣才能在mysql中取回這個多邊形的頂點(點)? 為什么我要問手段,后來我想找出一個點是否在多邊形內。 為了實現這一點,我希望我需要多邊形頂點。

如果你想要 WKT 回來: SELECT AsText(g) FROM geom;

要回答您的問題,一個不錯的選擇是輸出 GeoJSON 格式。 在此處查看更多信息:( https://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.html

select ST_AsGeoJSON(g) from geom;

為了幫助您在邊界多邊形中選擇點的實際問題:@jcorry 有一個很好的解決方案ST_Contains

要進一步擴展它以從 Polygon 封裝的coordinates表中選擇所有point ,您可以執行以下操作:

select
ST_X(point) as x,
ST_Y(point) as y   
from coordinates
where ST_Contains(
    (select g from geom limit 1), 
    point
)

如果要查找點是否在多邊形中,則不需要派生各個頂點來執行此操作。 MySQL(5.6+)中有一個函數:

SELECT ST_Contains(PolygonFromText('POLYGON((
9.190586853 45.464518970,
9.190602686 45.463993916,
9.191572471 45.464001929,
9.191613325 45.463884676,
9.192136130 45.463880767,
9.192111509 45.464095594,
9.192427961 45.464117804,
9.192417811 45.464112862,
9.192509035 45.464225851,
9.192493139 45.464371079,
9.192448471 45.464439002,
9.192387444 45.464477861,
9.192051402 45.464483037,
9.192012814 45.464643592,
9.191640825 45.464647090,
9.191622331 45.464506215,
9.190586853 45.464518970))'), PointFromText("POINT(10 42)")
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM