2015-11-19 16 views
7

与えられたlat、lonのGeoJSONポイントが、JavaScriptのみ(d3、topojson、または他の方法のいずれか)を使用して、指定されたGeoJSONポリゴン内にあるかどうかを判断できますか?JavasScriptを使用してGeoJSONポイントがGeoJSONポリゴンの内部にあるかどうかを確認することはできますか?

たとえば、チュートリアルhereに基づいて、イギリスの国を示す地図を描画できます。

私は座標を持っていても、それがどこの国にあるのかを知らないいくつかのポイントを持っています。

各国の合計ポイント数を表示したいと考えています。

どの国にブラウザの各ポイントが含まれているか、PostGISなどを使用してサーバー上でポイントデータを前処理する必要がありますか?

+1

[* "ポイントがgeojsonマルチポリゴンにあるかどうかをテストするためのNode.js/Javascriptライブラリ"](/ q/20379194)を参照してください。 – altocumulus

+0

@altocumulus - あなたのコメントは私を[JavaScript Clipper](http://sourceforge.net/projects/jsclipper/)に導いてくれました。また、「ポイントインポリゴン」がタグになることは決してありませんでした。 – user5325596

+0

合意されている、その[tag:point-in-polygon]タグは私を驚きで完全に連れてくれました;-)それに関連する質問は120件近くあります。あなた自身で問題の解決策を思いつくなら、この質問への回答を投稿してください。 – altocumulus

答えて

6

d3はあなたがカバーしているように思える:場合はtrueをhttps://github.com/d3/d3-geo#geoContains

d3.geoContains(オブジェクト、ポイント)

返しをし、オブジェクト場合は、指定にGeoJSONオブジェクトは指定されたポイント、または虚偽が含まれている場合のみポイントを含んでいません。ポイントは2要素の配列[経度、緯度]で指定する必要があります。 PointおよびMultiPointジオメトリでは、正確なテストが使用されます。 Sphereの場合、常にtrueが返されます。他の形状については、イプシロン閾値が適用される。 @thedude答えのあなたは、これが与えられたにGeoJSONに複数回チェックし実行する必要がある場合にもgeojson-lookupを使用することができます拡大

+1

これは正しいです。ただし、これはD3 ** v4 **の新しいメソッドであり、質問が投稿された時点では利用できませんでした。しかし、質問は特定のバージョンを対象としていないので、この回答は完全に合法です。 – altocumulus

+0

私はこの仕事を得ることができません。 'geoContains'は実際にはエリアの中心であるポイントに対して' false'を返します。私は与えられたポイントがこのエリアに属している(それが属している)場合、このエリアのgeoJsonを検証し(有効です)、Googleマップでチェックしました。 – surfrider

+1

私のポリゴンは反時計回りに見えますが、 'd3'は時計回りを予期しています。私は 'turf'ライブラリをテストしました。(これは、Jonatas Walkerが目指すコメントです)、反時計回りのポリゴンを食べています。 – surfrider

0

+1

参照としてリンクを使用し、答えに要点を置く方が良いです。 –

関連する問題