2017-11-15 6 views
0

このような何かやって、MySQLで非常に簡単です:lat/longのmysqlポリゴンの境界をxマイルまたはkmで拡大することはできますか?だから、ポリゴン内のポイントを探し

SELECT * FROM table WHERE ST_CONTAINS(ST_GEOMFROMTEXT('POLYGON((-72.0429540 42.9949644, -72.0405293 42.9929398, -72.0401645 42.9905541, -72.0353365 42.9888747, -72.0326543 42.9897850, -72.0343494 42.9935990, -72.0344567 42.9969733, -72.0367098 42.9980562, -72.0417953 42.9970361, -72.0429540 42.9949644))'), POINT(lat, long))

をしかし、のは、私はまた私のポリゴンの境界線の1マイル以内にあるアイテムを見つけたいとしましょう。これは簡単な方法はありますか?他の考え方は多分私の多角形の新しい点を計算することができるかもしれないが、どのように拡大する方向を知ることができるのか分からない。

+0

:代わりにポリゴンを拡大し、私はそうのようなのST_Distanceを持つ2つのジオメトリ間(度)の最短距離を照会することができますhttps://gis.stackexchange.com/questions/142326/calculating-longitude-length-in-miles – BusinessPlanQuickBuilder

+0

@ BusinessPlanQuickBuilder - それは 'コーナー'に丸みを帯びた領域が含まれているようです。つまり、単にコーナーの座標を移動することはできません。 –

答えて

0

私は自分自身の答えを見つけたと思う。 MySQLのドキュメントこれは、あなたがより広い国境での経度と緯度を再計算に役立つはず

SELECT * FROM table WHERE ST_DISTANCE(ST_GEOMFROMTEXT('POLYGON((-72.0429540 42.9949644, -72.0405293 42.9929398, -72.0401645 42.9905541, -72.0353365 42.9888747, -72.0326543 42.9897850, -72.0343494 42.9935990, -72.0344567 42.9969733, -72.0367098 42.9980562, -72.0417953 42.9970361, -72.0429540 42.9949644))'), ST_GEOMFROMTEXT(CONCAT('POINT(',lat,' ',long,')'))) < 50;

https://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html#function_st-distance

+0

lat/lngのように見えますか?この場合、 'ST_Distance_Sphere()'が必要です - https://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html –

+0

@RickJamesこれはlat/lngですが、 st_distance_sphere'がありますが、ポリゴンをサポートするようには見えません。 'st_distance'は座標で距離を返しますので、絶対にうまくいきます:) – clearmend

関連する問題