如何查詢postgresql+openstreetmap

來源:互聯網
上載者:User

標籤:des   style   使用   os   io   資料   art   ar   

先行輸入:psql gis
\d  顯示當前資料表
               List of relations Schema |        Name        | Type  |  Owner   --------+--------------------+-------+---------- public | geography_columns  | view  | postgres public | geometry_columns   | table | gis public | planet_osm_line    | table | user public | planet_osm_nodes   | table | user public | planet_osm_point   | table | user public | planet_osm_polygon | table | user public | planet_osm_rels    | table | user public | planet_osm_roads   | table | user public | planet_osm_ways    | table | user public | spatial_ref_sys    | table | gis(10 rows)

再進入某一個資料表,語句為:\d planet_osm_roads

就會出現如下的顯示:

Table "public.planet_osm_roads" Column | Type | Modifiers --------------------+----------+----------- osm_id | bigint | access | text | addr:housename | text | addr:housenumber | text | addr:interpolation | text | admin_level | text | aerialway | text | aeroway | text | amenity | text | .... waterway | text | wetland | text | width | text | wood | text | z_order | integer | way_area | real | way | geometry |

然後就可以進行訪問操作了,如下:

SELECT osm_id,name,way FROM planet_osm_roads LIMIT 1;

 

但是,後來在python中發現,psycopg2似乎不支援\d的輸入,所以,我後來又換了一種查詢的方法:

select planet_osm_roads.\"OSM_ID\", ST_AsText(planet_osm_roads.\"the_geom\") from public.planet_osm_roads;

這個語句相對來說更加正規一點,但是使用起來會麻煩一些,需要從最頭上進入到資料庫中,但是,查詢結果肯定是一樣的。

另外,由於openstreetmap中的the_geom是通過geometry資料類型來儲存的,所以以上我使用了ST_AsTExt 函數進行格式轉換。

格式轉換之後,顯示為:

( ‘LINESTRING(12936024.28 4839648.07,12935424.71 4838722.06,12934892.21 4837629.71,12934289.2 4836007.5,12933955.4 4834815.49,12933523.99 4834253.51,12932398.66 4833859.51,12930942.93 4833698.73,12930017.2 4833337.34,12928792.52 4832545.6,12927333.4 4830992.71,12926605.54 4830332.04,12925976.25 4830134.83,12925216.94 4830137.07,12924226.69 4830471.27,12923535.34 4830870.63,12923537.07 4831566.67,12923670.37 4832229,12924035.56 4832857.78,12924368.51 4833585.97,12924703.14 4834446.89,12923880.16 4835708.54,12922724.27 4836241.84,12922132.27 4836939.92,12921903.85 4838034.36,12921642.24 4839195.88,12921447.77 4840290.58,12921153.05 4841352.77,12920474.79 4841645.26,12918234.82 4842608.73)‘)

應該代表的是各個node的GPS座標值。

 

另外附上ST的函數集合:

擷取幾何對象的WKT描述 ST_AsText(geometry)
擷取幾何對象的WKB描述 ST_AsBinary(geometry)
擷取幾何對象的空間參考ID ST_SRID(geometry)
擷取幾何對象的維數 ST_Dimension(geometry)
擷取幾何對象的邊界範圍 ST_Envelope(geometry)
判斷幾何對象是否為空白 ST_IsEmpty(geometry)
判斷幾何對象是否不包含特殊點(比如自相交) ST_IsSimple(geometry)
判斷幾何對象是否閉合 ST_IsClosed(geometry)
判斷曲線是否閉合并且不包含特殊點 ST_IsRing(geometry)
擷取多幾何對象中的對象個數 ST_NumGeometries(geometry)
擷取多幾何對象中第N個對象 ST_GeometryN(geometry,int)
擷取幾何對象中的點個數 ST_NumPoints(geometry)
擷取幾何對象的第N個點 ST_PointN(geometry,integer)
擷取多邊形的外邊緣 ST_ExteriorRing(geometry)
擷取多邊形內邊界個數 ST_NumInteriorRings(geometry)
同上 ST_NumInteriorRing(geometry)
擷取多邊形的第N個內邊界 ST_InteriorRingN(geometry,integer)
擷取線的終點 ST_EndPoint(geometry)
擷取線的起始點 ST_StartPoint(geometry)
擷取幾何對象的類型 GeometryType(geometry)
類似上,但是不檢查M值,即POINTM對象會被判斷為point ST_GeometryType(geometry)
擷取點的X座標 ST_X(geometry)
擷取點的Y座標 ST_Y(geometry)
擷取點的Z座標 ST_Z(geometry)
擷取點的M值 ST_M(geometry)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.