ST_GeomFromMARC21 — 接收 MARC21/XML 地理資料作為輸入,並回傳 PostGIS 幾何物件。
geometry ST_GeomFromMARC21 (
text marcxml )
;
此函數從 MARC21/XML 記錄建立 PostGIS 幾何物件,其中可能包含 POINT
或 POLYGON
。如果同一個 MARC21/XML 記錄中有多個地理資料條目,則會回傳 MULTIPOINT
或 MULTIPOLYGON
。如果記錄包含混合的幾何類型,則會回傳 GEOMETRYCOLLECTION
。如果 MARC21/XML 記錄不包含任何地理資料(資料欄位:034),則回傳 NULL。
支援的 LOC MARC21/XML 版本
可用性:3.3.0,需要 libxml2 2.6+
![]() |
|
MARC21/XML 編碼的地圖數學資料目前沒有提供任何方法來描述編碼座標的空間參考系統,因此此函數將始終回傳 |
![]() |
|
回傳的 |
轉換包含單個 POINT
的 MARC21/XML 地理資料,編碼為 hddd.dddddd
SELECT ST_AsText( ST_GeomFromMARC21(' <record xmlns="http://www.loc.gov/MARC21/slim"> <leader>00000nz a2200000nc 4500</leader> <controlfield tag="001">040277569</controlfield> <datafield tag="034" ind1=" " ind2=" "> <subfield code="d">W004.500000</subfield> <subfield code="e">W004.500000</subfield> <subfield code="f">N054.250000</subfield> <subfield code="g">N054.250000</subfield> </datafield> </record>')); st_astext ------------------- POINT(-4.5 54.25) (1 row)
轉換包含單個 POLYGON
的 MARC21/XML 地理資料,編碼為 hdddmmss
SELECT ST_AsText( ST_GeomFromMARC21(' <record xmlns="http://www.loc.gov/MARC21/slim"> <leader>01062cem a2200241 a 4500</leader> <controlfield tag="001"> 84696781 </controlfield> <datafield tag="034" ind1="1" ind2=" "> <subfield code="a">a</subfield> <subfield code="b">50000</subfield> <subfield code="d">E0130600</subfield> <subfield code="e">E0133100</subfield> <subfield code="f">N0523900</subfield> <subfield code="g">N0522300</subfield> </datafield> </record>')); st_astext ----------------------------------------------------------------------------------------------------------------------- POLYGON((13.1 52.65,13.516666666666667 52.65,13.516666666666667 52.38333333333333,13.1 52.38333333333333,13.1 52.65)) (1 row)
轉換包含 POLYGON
和 POINT
的 MARC21/XML 地理資料
SELECT ST_AsText( ST_GeomFromMARC21(' <record xmlns="http://www.loc.gov/MARC21/slim"> <datafield tag="034" ind1="1" ind2=" "> <subfield code="a">a</subfield> <subfield code="b">50000</subfield> <subfield code="d">E0130600</subfield> <subfield code="e">E0133100</subfield> <subfield code="f">N0523900</subfield> <subfield code="g">N0522300</subfield> </datafield> <datafield tag="034" ind1=" " ind2=" "> <subfield code="d">W004.500000</subfield> <subfield code="e">W004.500000</subfield> <subfield code="f">N054.250000</subfield> <subfield code="g">N054.250000</subfield> </datafield> </record>')); st_astext ------------------------------------------------------------------------------------------------------------------------------------------------------------- GEOMETRYCOLLECTION(POLYGON((13.1 52.65,13.516666666666667 52.65,13.516666666666667 52.38333333333333,13.1 52.38333333333333,13.1 52.65)),POINT(-4.5 54.25)) (1 row)