名称

ST_GeomFromMARC21 — 将 MARC21/XML 地理数据作为输入,并返回一个 PostGIS 几何对象。

概要

geometry ST_GeomFromMARC21 ( text marcxml );

描述

此函数从 MARC21/XML 记录创建 PostGIS 几何,该记录可以包含 POINTPOLYGON。如果同一个 MARC21/XML 记录中存在多个地理数据条目,则将返回 MULTIPOINTMULTIPOLYGON。如果记录包含混合几何类型,则将返回 GEOMETRYCOLLECTION。如果 MARC21/XML 记录不包含任何地理数据(数据字段:034),则返回 NULL。

支持的 LOC MARC21/XML 版本

可用性:3.3.0,需要 libxml2 2.6+

[Note]

MARC21/XML 编码的制图数学数据目前没有提供任何方法来描述编码坐标的空间参考系统,因此此函数将始终返回一个具有 SRID 0 的几何。

[Note]

返回的 POLYGON 几何将始终为顺时针方向。

示例

将包含单个 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)

            

将包含 POLYGONPOINT 的 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)
            

另请参阅

ST_AsMARC21