ST_AsMARC21 — ジオメトリを、地理データフィールド (034)を持つMARC21/XMLデータとして返します。
text ST_AsMARC21 ( geometry geom , text format='hdddmmss' );
この関数は与えられたジオメトリのバウンディングボックスを表現するコード化地図数値データを持つMARC21/XMLのデータを返します。formatパラメータを使うと、MARC21/XMLが対応する全てのフォーマットにおける$d、$e、$f、$gサブフィールド内の座標を符号化できます。妥当なフォーマットは次の通りです。
経緯度識別値、度、分、秒 (デフォルト): hdddmmss
経緯度識別値付き十進の度: hddd.dddddd
経緯度識別値なし十進の度: ddd.dddddd
経緯度識別値付き十進の分: hdddmm.mmmm
経緯度識別値なし十進の分: dddmm.mmmm
経緯度識別値付き十進の秒: hdddmmss.sss
小数点はhdddmm,mmmmのようにカンマでも構いません。
10進数形式の精度は小数点以下の数字の数によって制限されます。十進の分でhdddmm.mmの場合には2桁の精度となります。
この関数はZ値とM値を無視します。
対応するLOC MARC21/XMLのバージョンは次の通りです。
Availability: 3.3.0
![]() | |
この関数は経度/緯度でないジオメトリには対応していません。MARC21/XML標準 (コード化地図数値データ)で対応していないためです。 |
![]() | |
MARC21/XML標準では、コード化地図数値データに空間参照系情報を与えることはできません。これはMARC21/XMLへの変換で空間参照系情報が失われることを意味します。 |
POINTのhdddmmss (デフォルト)を使ったMARC21/XMLへの変換
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>
POLYGONの、十進の度を使ったMARC21/XMLへの変換
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>
GEOMETRYCOLLECTIONの、十進の分を使ったMARC21/XMLへの変換。MARC21/XML出力のジオメトリの順序はコレクション内の順序に対応しています。
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>