ST_GeomFromMARC21 — 接收 MARC21/XML 地理数据作为输入,并返回一个 PostGIS 几何对象。
geometry ST_GeomFromMARC21 ( text marcxml );
此函数从 MARC21/XML 记录创建 PostGIS 几何对象,该记录可以包含一个 POINT 或一个 POLYGON。 如果同一个 MARC21/XML 记录中存在多个地理数据条目,将返回一个 MULTIPOINT 或 MULTIPOLYGON。 如果记录包含混合的几何类型,则将返回一个 GEOMETRYCOLLECTION。 如果 MARC21/XML 记录不包含任何地理数据 (datafield:034),则返回 NULL。
支持的 LOC MARC21/XML 版本
可用性:3.3.0,需要 libxml2 2.6+
|
|
|
MARC21/XML 编码的制图数学数据目前不提供任何描述编码坐标的空间参考系统的方法,因此此函数将始终返回 SRID 为 |
|
|
|
返回的 |
转换包含单个 POINT 编码为 hddd.dddddd 的 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)
转换包含单个 POLYGON 编码为 hdddmmss 的 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)