Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_GEOMFROMMARC21

📄字数 810
👁️阅读量 加载中...

功能描述

从 MARC21/XML 记录创建几何图形,其中可以包含 POINTPOLYGON

语法格式

sql
GEOMETRY ST_GEOMFROMMARC21 ( CLOB marcxml );

参数说明

  • marcxml :MARC21/XML 记录字符串。

函数返回类型

GEOMETRY 类型

使用说明

  1. 如果同一 MARC21/XML 记录中有多个地理数据条目,将返回 MULTIPOINT 或 MULTIPOLYGON。
  2. 如果记录包含混合几何类型,则将返回 GEOMETRYCOLLECTION。
  3. 如果 MARC21/XML 记录不包含任何地理数据(数据字段:034),则返回 NULL。
  4. 支持的 LOC MARC21/XML 版本:MARC21/XML 1.1。
  5. 需要 libxml2 2.6+。
  6. 在 MARC21/XML 编码的地理数据中,目前无法描述编码坐标的空间参考系,因此该函数将始终返回 SRID 0 的几何图形。
  7. 返回的 POLYGON 几何图形将始终是顺时针方向。

示例

转换包含编码为 hddd.dddddd 的单个 POINT 的 MARC21/XML 地理数据:

sql
SQL>    SELECT TO_CHAR(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
>')));

+-------------------+
|       EXPR1       |
+-------------------+
| POINT(-4.5 54.25) |
+-------------------+

转换包含编码为 hdddmmss 的单个 POLYGON 的 MARC21/XML 地理数据:

sql
SQL> SELECT
            TO_CHAR(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
     >')));

+-----------------------------------------------------------------------------------------------------------------------+
|                                                         EXPR1                                                         |
+-----------------------------------------------------------------------------------------------------------------------+
| POLYGON((13.1 52.65,13.516666666666667 52.65,13.516666666666667 52.38333333333333,13.1 52.38333333333333,13.1 52.65)) |
+-----------------------------------------------------------------------------------------------------------------------+