Name

ST_AsMARC21 — Returnerar geometri som en MARC21/XML-post med ett geografiskt datafält (034).

Synopsis

text ST_AsMARC21 ( geometry geom , text format='hdddmmss' );

Beskrivning

Denna funktion returnerar en MARC21/XML-post med kodade kartografiska matematiska data som representerar den begränsande boxen för en given geometri. Formatparametern gör det möjligt att koda koordinaterna i underfälten $d,$e,$f och $g i alla format som stöds av MARC21/XML-standarden. Giltiga format är:

  • kardinalriktning, grader, minuter och sekunder (standard): hdddmmss

  • decimalgrader med kardinalriktning: hddd.dddddd

  • decimalgrader utan kardinalriktning: ddd.dddddddd

  • decimalminuter med kardinalriktning: hdddmm.mmmm

  • decimalminuter utan kardinalriktning: dddmm.mmmm

  • decimalsekunder med kardinalriktning: hdddmmss.sss

Decimaltecknet kan också vara ett kommatecken, t.ex. hdddmm,mmmm..

Precisionen i decimalformat kan begränsas av antalet tecken efter decimaltecknet, t.ex. hdddmm.mm för decimala minuter med en precision på två decimaler.

Denna funktion ignorerar Z- och M-dimensionerna.

Stöd för LOC MARC21/XML-versioner:

Tillgänglighet: 3.3.0

[Note]

Denna funktion stöder inte geometrier som inte är lon/lat, eftersom de inte stöds av MARC21/XML-standarden (Coded Cartographic Mathematical Data).

[Note]

MARC21/XML-standarden tillhandahåller inte något sätt att kommentera det spatiala referenssystemet för kodade kartografiska matematiska data, vilket innebär att denna information kommer att gå förlorad efter konvertering till MARC21/XML.

Exempel

Konvertera en POINT till MARC21/XML formaterad som hdddmmss (standard)



                SELECT ST_AsMARC21('SRID=4326;POINT(-4.504289 54.253312)'::geometry);

                                st_asmarc21
                -------------------------------------------------
                <record xmlns="http://www.loc.gov/MARC21/slim">
                    <datafield tag="034" ind1="1" ind2=" ">
                        <subfield code="a"
>a</subfield>
                        <subfield code="d"
>W0043015</subfield>
                        <subfield code="e"
>W0043015</subfield>
                        <subfield code="f"
>N0541512</subfield>
                        <subfield code="g"
>N0541512</subfield>
                    </datafield>
                </record>



Konvertering av en POLYGON till MARC21/XML formaterad i decimalgrader



                SELECT ST_AsMARC21('SRID=4326;POLYGON((-4.5792388916015625 54.18172660239091,-4.56756591796875 54.196993557130355,-4.546623229980469 54.18313300502024,-4.5792388916015625 54.18172660239091))'::geometry,'hddd.dddd');

                <record xmlns="http://www.loc.gov/MARC21/slim">
                    <datafield tag="034" ind1="1" ind2=" ">
                        <subfield code="a"
>a</subfield>
                        <subfield code="d"
>W004.5792</subfield>
                        <subfield code="e"
>W004.5466</subfield>
                        <subfield code="f"
>N054.1970</subfield>
                        <subfield code="g"
>N054.1817</subfield>
                    </datafield>
                </record>



Konvertering av en GEOMETRYCOLLECTION till MARC21/XML formaterad i decimalminuter. Geometriernas ordning i MARC21/XML-utdata motsvarar deras ordning i samlingen.



                SELECT ST_AsMARC21('SRID=4326;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))'::geometry,'hdddmm.mmmm');

                                st_asmarc21
                -------------------------------------------------
                <record xmlns="http://www.loc.gov/MARC21/slim">
                    <datafield tag="034" ind1="1" ind2=" ">
                        <subfield code="a"
>a</subfield>
                        <subfield code="d"
>E01307.0000</subfield>
                        <subfield code="e"
>E01331.0000</subfield>
                        <subfield code="f"
>N05240.0000</subfield>
                        <subfield code="g"
>N05224.0000</subfield>
                    </datafield>
                    <datafield tag="034" ind1="1" ind2=" ">
                        <subfield code="a"
>a</subfield>
                        <subfield code="d"
>W00430.0000</subfield>
                        <subfield code="e"
>W00430.0000</subfield>
                        <subfield code="f"
>N05415.0000</subfield>
                        <subfield code="g"
>N05415.0000</subfield>
                    </datafield>
                </record>