ST_GeomFromMARC21 — MARC21/XML地理データを入力に取り、PostGISジオメトリオブジェクトを返します。
geometry ST_GeomFromMARC21 (
text marcxml )
;
この関数はMARC21/XMLデータからPostGISジオメトリを生成するものです。POINT
またはPOLYGON
を含みます。同じMARC21/XMLデータで複数の地理データが存在する場合には、 MULTIPOINT
またはMULTIPOLYGON
を返します。データにジオメトリタイプが混じっている場合には、GEOMETRYCOLLECTION
を返します。MARC21/XMLデータに地理データ (データフィールド:034)を含まない場合にはNULLを返します。
対応するLOC MARC21/XMLのバージョンは次の通りです。
Availability: 3.3.0 libxml2 2.6以上が必要です。
MARC21/XMLコード化地理数値データでは、今のところコード化した座標の空間参照系を記述する手段がないため、この関数は常に |
返される |
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)