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 编码的地理数据中,目前无法描述编码坐标的空间参考系,因此该函数将始终返回 |
返回的 |
转换包含编码为 hddd.dddddd
的单个 POINT
的 MARC21/XML 地理数据
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)
转换包含编码为 hdddmmss
的单个 POLYGON
的 MARC21/XML 地理数据
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)