2014-10-04 70 views
1

一句問候,一個朋友發生在我身上的運輸路線,我一步的格式如下:GEOM格式谷歌打印地圖的Android

0102000020E610000049020000F2D077B7B23A53C0F03504C7651428C07E703E75AC3A53C07E37DDB2431428C07E8AE3C... 

他告訴我,這是一個MultiLineString。我用了功能:

SELECT St_asewkt ('0102000020E6100000810200 .....'); 

有了這個,我推測應該是能夠得到wkt格式,我可以 獲取座標,並用它在谷歌地圖API中的Android畫的路徑,但使用時把我扔空了。請幫助我

我需要得到像MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) ...這樣的東西,才能獲得經緯度座標,以便在android maps中使用Google Maps API進行繪製。

要總結一下我是這個值

0102000020E6100000810200 .....,想畫它在與谷歌地圖API的Android,這就是爲什麼我試圖讓該功能的座標。

+0

嘗試[ST_AsText](http://www.postgis.org/docs/ST_AsText.html) – 2014-10-04 08:52:29

+0

結果爲空:( – Eragonz91 2014-10-04 09:22:02

回答

2

你有什麼是Well know binary, WKB,這是此頁面上有它的同伴熟知文本(WKT)一起解釋,但在一個ASCII(十六進制)表示,看到the docs

如果你做這樣的事情:

select st_setsrid(st_makepoint(50, -2),4326); 

你會看到0101000020E6100000000000000000494000000000000000C0,類似於你的。

,您可以直接與

create table test (g geometry); 
insert into test(g) values(ST_GeomFromEWKB(E'\\x0101000020E6100000000000000000494000000000000000C0') 

其中E'\\x表明您插入一個十六進制字符串,請參閱binary format docs這些插入到數據庫中。

如果你現在要做的

select g from test; 

你會得到你WKB回來,如果你這樣做

select st_astext(g) from test; 

,你會看到更多的人類可讀的格式WKT。

以正確的格式加載數據的最佳方法是使用:

COPY table_name FROM your_file.csv CSV; 

您的WKB會,原樣,不帶引號,在your_file.csv。

+0

非常好的貢獻,我認爲如果解決方案由於某種原因而無法正常工作。插入正確,但數據顯示,顯示爲空 你認爲這是錯誤的?我的朋友告訴我,這是擺脫是4326 – Eragonz91 2014-10-04 16:54:31

+0

如果你想我可以給你全價值給你試試,也許我錯了 – Eragonz91 2014-10-04 16:55:54

+0

我有20個這樣的路線,並沒有爲我工作。有16410數字格式,並開始爲0102000020E610000000020000ED17951D064853C03CFA1A4281F827C01F ... – Eragonz91 2014-10-04 17:00:12