簡體   English   中英

postgis上經緯度的幾何多邊形

[英]Geometry polygon to lat long on postgis

我需要將 potsgres 幾何數據類型轉換為 lat long。

這是我的桌子在此處輸入圖像描述

geom 列存儲坐標,但它們不是人類可讀的。

我只是不知道如何獲得構成多邊形的每個點。

幾何數據類型https://postgis.net/docs/reference.html#Geometry_Outputs有一些輸出選項。

我需要 lat long 的每一點,因為我必須在這段代碼中使用它們來定義和渲染谷歌地圖上的多邊形

$coords = [
          new LatLng(['lat' => 25.774252, 'lng' => -80.190262]),
          new LatLng(['lat' => 18.466465, 'lng' => -66.118292]),
          new LatLng(['lat' => 32.321384, 'lng' => -64.75737]),
        ];

        $polygon = new Polygon([
          'paths' => $coords
        ]);

問題是我無法訪問 lat long 來定義構成多邊形的點。

我正在使用 YII2、yii2-google-maps 擴展、PostGis Postgress。

要在WKT中顯示幾何圖形,請使用函數ST_AsText

SELECT ST_AsText(geom) FROM colonias

如果您更喜歡GeoJSONGML ,請使用以下函數:

SELECT ST_AsGeoJSON(geom) FROM colonias;
SELECT ST_AsGML(geom) FROM colonias 

有關 PostGIS 中的更多輸出格式,另請參閱此other answer

要拆分經度和緯度,請使用函數ST_XST_Y

SELECT ST_X(geom),ST_Y(geom) FROM colonias

考慮到您的幾何不是點,您必須首先使用ST_DumpPoints提取點,然后如上所述解析它們。 一個直接的方法是使用CTE (又名 WITH 子句)。

例子:

WITH j AS (
  SELECT (ST_DumpPoints(ST_GeomFromText('POLYGON (( 2 0, 2 3, 0 2, 2 0 ))'))).geom AS point
) 
SELECT ST_X(j.point), ST_Y(j.point) FROM j;

演示: db<>fiddle

暫無
暫無

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

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