3

Google Refine を使用して XML を解析し、XML からデータを抽出する必要があります。

XMLはこのようなものです

<wfs:FeatureCollection xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver http://wms.pcn.minambiente.it/ogc?map=/ms_ogc/wfs/Numeri_Civici_2012.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=IN.NUMERICIVICI.2012&OUTPUTFORMAT=text/xml;%20subtype=gml/3.1.1  http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"><gml:boundedBy><gml:Envelope srsName="EPSG:4326"><gml:lowerCorner>45.808287 9.575815</gml:lowerCorner><gml:upperCorner>45.808287 9.575815</gml:upperCorner></gml:Envelope></gml:boundedBy><gml:featureMember><ms:IN.NUMERICIVICI.2012 gml:id="IN.NUMERICIVICI.2012.1225789"><gml:boundedBy><gml:Envelope srsName="EPSG:4326"><gml:lowerCorner>45.808287 9.575815</gml:lowerCorner><gml:upperCorner>45.808287 9.575815</gml:upperCorner></gml:Envelope></gml:boundedBy><ms:boundary><gml:Point srsName="EPSG:4326"><gml:pos>45.808287 9.575815</gml:pos></gml:Point></ms:boundary><ms:id>13800026062251</ms:id><ms:nome>Via Milano</ms:nome><ms:civico>55</ms:civico><ms:istat>03016023</ms:istat><ms:cap>24030</ms:cap><ms:comune>BERBENNO</ms:comune><ms:nome_ted> </ms:nome_ted><ms:provincia>BERGAMO</ms:provincia><ms:regione>LOMBARDIA</ms:regione></ms:IN.NUMERICIVICI.2012></gml:featureMember></wfs:FeatureCollection>

このタグに関する座標を抽出したいと思います

<gml:Point srsName="EPSG:4326"><gml:pos>45.808287 9.575815</gml:pos></gml:Point>

したがって、2 つの異なるフィールドに 45.808287 と 9.575815 という単一の数値

私は次のようなものを試しました

value.parseHtml().select("Point|pos")......

しかし、私は続ける方法がわかりません。

助言がありますか?

4

2 に答える 2

3

自分で解決策を見つけられたことをお祝いします (そして、他の人に役立つように、参考文献と共に投稿してください)。

実際には、少し異なる方法で行うことをお勧めします。

value.parseHtml().select('gml|Point gml|pos')[0].htmlText().trim().split(' ')[0].toNumber()

主な重要な違いはhtmlText()、要素を (タグ付きの) 文字列に変換してから、固定部分文字列を使用してタグを削除するのではなく、 を使用してテキスト コンテンツを抽出することです。

私が行ったもう 1 つの純粋な文体的な変更は、関数チェーンを使用して、操作の順序が内側から外側ではなく、左から右に読み取られるようにすることでした。

trim()私が含めたものはあなたの例では必要ありませんが、衛生状態を良くするために含めました. 最小バージョンは次のようになります。

value.parseHtml().select('gml|Point gml|pos')[0].htmlText().split(' ')[0].toNumber()
value.parseHtml().select('gml|Point gml|pos')[1].htmlText().split(' ')[0].toNumber()

forEachユースケースでより便利な場合は、演算子を使用して配列内の座標を取得することもできます。

forEach(value.parseHtml().select('gml|Point gml|pos')[0].htmlText().split(' '), n, n.toNumber())
于 2015-05-14T16:36:07.283 に答える