0

関心のあるエンティティに関連付けられた一連のジオメトリを返すクエリがあります。このクエリは、Google マップに表示する KML を構築するために使用されます。

私が取得した列はタイプGEOMETRYであり、私のデータセット内では、GeometryCollectionタイプの要素が 1 つだけの aがほとんど含まれていPolygonます。他のレコードはMultiPolygonタイプです。

AVGオペレーターの動作と同じように、結果セット内のすべてのジオメトリの重心を計算したいと思います。SELECT GEOMETRY FROM GEOENTITIES WHERE [..]つまり、MySQL で結果セット内のすべての行のジオメトリの結合を計算し、それらの重心を計算するようなクエリが与えられた場合です。

例として、イタリアの都市を取り上げてみましょう。結果セットにローマのポリゴンとミラノのポリゴンのみが含まれている場合、両方の重心はフィレンツェ周辺にあると予想されます。

実際には、このUNION()関数は行レベルではなく、列ベースのレベルで機能します。同じ行内の 2 つの列から 2 つのジオメトリを結合できます (ドキュメントに従って)

すべての行のポリゴンをコレクションに統合するには、集計演算子が必要です。コレクションから、重心を計算することが期待できます。

これは可能ですか?

4

1 に答える 1

1

そのような空間関数を含む現在のmysql(5.7 VERSION)(おそらく将来)はないと思います(http://dev.mysql.com/doc/refman/5.7/en/functions-that-c​​reate-new-geometries- from-existing-ones.html#functions-that-produce-new-geometries )

行があります:OpenGISは、ジオメトリを生成できる他の多くの機能を提案しています。これらは、空間演算子を実装するように設計されています。これらの関数はMySQLには実装されていません。

したがって、MySQL では実行できないため、アプリケーション側でそれを実現する唯一の方法は、使用しているものが何であれ. たとえば、OpenLayer JavaScript はこれを行うことができます: ( https://gis.stackexchange.com/questions/19964/how-to-merge-two-polygons-in-openlayers )

または、 http://postgis.net/や Oracle Spatialなどの空間指向データベースを使用できます:)

于 2013-11-22T16:36:35.073 に答える