簡體   English   中英

如何在緯度和經度中從 R 中的 PostGis 轉換 Geom 對象?

[英]How to convert Geom object from PostGis in R in latitude and longitude?

我有一個具有“位置”屬性的數據庫,它被保存為 geom 對象,如下所示: 0101000020E6100000000000603D1D5EC0000000A06D424740

有沒有辦法在R中從中提取坐標? 這些值作為字符串加載到 R 中。 它還給出了警告:

Warning message:
In postgresqlExecStatement(conn, statement, ...) :
  RS-DBI driver warning: (unrecognized PostgreSQL field type geometry (id:18832) in column 2)

任何幫助表示贊賞。

您是否嘗試過使用rgeos函數? 一種選擇是直接從數據庫中讀取 WKT(使用ST_AsText )...

SELECT ST_AsText('0101000020E6100000000000603D1D5EC0000000A06D424740');
                st_astext                 
------------------------------------------
 POINT(-120.456871032715 46.518970489502)
(1 Zeile)

在 R 中,使用readWKT然后可以提取坐標對:

> readWKT("POINT(-120.456871032715 46.518970489502)")
SpatialPoints:
          x        y
1 -120.4569 46.51897
Coordinate Reference System (CRS) arguments: NA 

另一種選擇是使用ST_XST_Y直接從數據庫讀取x,y

 SELECT ST_X('0101000020E6100000000000603D1D5EC0000000A06D424740'),
        ST_Y('0101000020E6100000000000603D1D5EC0000000A06D424740');
       st_x        |      st_y       
-------------------+-----------------
 -120.456871032715 | 46.518970489502
(1 Zeile)

我看到Jim Jones 的回答主要使用 postgis 而不是 R。SF 包允許將眾所周知的二進制 (WKB) 轉換為簡單的特征列 (sfc),然后可以將其轉換為坐標。
st_as_sfc 文檔
代碼:

library(sf)
#> Warning: package 'sf' was built under R version 4.0.3
#> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
wkb = structure(list("0101000020E6100000000000603D1D5EC0000000A06D424740"), class = "WKB")
st_as_sfc(wkb,EWKB = TRUE) %>% st_coordinates()
#>           X        Y
#> 1 -120.4569 46.51897

暫無
暫無

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

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