MS SQLデータベースでGeometryオブジェクトを構築できるように、郵便番号を受け取り、境界(境界)座標を返すサービス/ APIはありますか?
境界座標とは、米国の郵便番号を定義するポリゴンを構成するGPS座標のリストを取得したいという意味です。
郵便番号はポリゴンではないという私のコメントの詳細。
「ああ、私はinこの郵便番号に住んでいます...」と言うので、郵便番号を領域(ポリゴン)と考えることがよくあります。これは、含まれている地域の印象を与え、おそらく事実です。そのZipは「ZoneImprovement Plan」の略で、ポリゴンとの誤った関連付けに役立ちます。
実際には、郵便番号は、ある意味で郵便配達ルートを表す行です。幾何学的には、線には面積がありません。 線が座標平面に沿った点の文字列であるように、郵便番号の線はUSPS指定の住所の抽象空間内の配達点の文字列です。
それらはnot地理座標に相関しています。ただし、距離や場所にまったく関係のないルートをキャリアが持つことは非効率的であるため、地理的に方向付けられていることがappearであることがわかります。
この「USPS指定住所の抽象的な空間」とは何ですか?これが、米国郵政公社が管理している配達可能な場所の大規模で神秘的なデータベースについて説明している方法です。住所は地理に基づいて割り当てられるのではなく、通常は通りや移動性に関連する運送業者が移動するルートに基づいて割り当てられます。
一部の5桁の郵便番号は、単一の建物、建物の複合体、または建物の1つのフロアです(はい、複数の郵便番号は、配信ポイントが垂直に階層化されているため、単一の座標に配置できます)。これらのいくつか(とりわけ)は「ユニークな」ZIPです。企業や大学は、マーケティングや組織の目的で独自の郵便番号を取得することがよくあります。たとえば、 郵便番号「12345」はGeneral Electricに属しています ニューヨーク州スケネクタディにあります。 (編集:以前のバージョンのGoogleマップでは、そのリンクをたどると、座標ではない郵便番号を指しているため、配置マーカーがホバリングしていることに気付くでしょう。ほとんどの米国の郵便番号は以前は表示されていましたがGoogleマップの地域では、USPSがいわば「所有」しておらず、地域がないため、これらのタイプはできません。)
楽しみのために、一意の郵便番号で住所を確認してみましょう。 SmartyStreets に移動し、次のように12345で偽のアドレスを入力します。
ストリート:999 Sdf sdf
郵便番号:12345
それを確認しようとすると、注意してください...それは有効です!どうして? USPSは、その固有の郵便番号のピースをレセプタクルに配信しますが、その時点で、それを配布するのはGEの責任です。住所(技術的には「配達ライン1」)を含め、郵便番号の内部のほとんどすべてがUSPSとは無関係です。多くの大学は同じように機能します。 これに関する詳細はこちらです。
ここで、同じ偽の住所を、郵便番号なしで試して、代わりに都市/州を実行します。
ストリート:999 Sdf sdf
市:スケネクタディ
州:ニューヨーク
検証されません。これは、スケネクタディに住所が「有効」である12345が含まれていても、スケネクタディの「実際の」郵便番号と幾何学的に交差するためです。
別の例を見てみましょう:軍隊。特定の海軍艦艇には、独自の郵便番号があります。軍事アドレスは、まったく異なるクラスのアドレス同じ名前空間を使用です。船が移動します。地理座標はそうではありません。
Zipの精度も楽しいものです。 5桁の郵便番号は最も「正確」ではありません(ただし、郵便番号は何も特定しないため、ここでは「特定の」という用語の方が意味がある場合があります)。 7桁および9桁の郵便番号が最も具体的であり、都市部ではブロックレベルまたは近隣レベルに至ることがよくあります。ただし、各郵便番号はサイズが異なるため、話している実際の距離を判断するのは本当に難しいです。
9桁の郵便番号が建物の床に分割されている可能性があるため、数百の住所の可能性がある郵便番号が重複している可能性があります。
結論:郵便番号は、一般的な信念に反して、地理データや境界データを提供しません。郵便番号は大きく異なり、実際には、あなたがいない限りまったく役に立ちません。 「メールやパッケージを配信しています...しかし、USPSの仕事は、人口を調整地域にそれほど分割するのではなく、効率的な運送業者のルートを設計することでした。
それは国勢調査局の仕事です。郵便番号は操作に「便利」であるため、 地図作成境界のリスト をコンパイルしました。これを行うために、彼らはアドレスの束を国勢調査ブロックに分割しました。次に、USPSの郵便番号データを集計して、国勢調査細分区(大まかな座標データがある)と郵便番号の関係を見つけました。したがって、線を多角形としてプロットするとどのように見えるかについて、近似があります。 (明らかに、彼らは、線形データに合うようにその内容に基づいて2Dポリゴンを変換することによって1Dラインを2Dポリゴンに変換しました-一意ではない通常の郵便番号ごとに。)
彼らのウェブサイト(上記のリンク)から:
郵便番号集計領域(ZCTA)は、米国郵政公社の5桁または3桁の郵便番号の配達領域を概算する統計的な地理的エンティティです。 ZCTAは、米国国勢調査局のマスター住所ファイル(MAF)の住所に関連付けられた同じ主要な郵便番号を持つ国勢調査ブロックの集合体です。 3桁のZCTAコードは、米国国勢調査局のMAFに5桁の郵便番号情報がない大きな隣接領域に適用されます。 ZCTAは、郵便番号の配信領域を正確に示しているわけではなく、メール配信に使用されるすべての郵便番号が含まれているわけではありません。米国国勢調査局は、1990年以前の国勢調査に関連して実施された郵便番号のデータ集計に類似しているが、それに代わる新しい地理的エンティティとしてZCTAを確立しました。
USCBのデータセットは不完全であり、時には不正確です。グーグルもまだデータに穴が開いている(12345はやや良い例だ)が、グーグルは最終的に各住所と郵便番号を手作業で調べることでパッチを当てる。彼らはすでにこれを行っていますが、まだすべての地図データを完璧にしたわけではありません。当然、このデータへのアクセスはAPI用語に制限されており、これらを上げるには非常に費用がかかります。
ふぅ。私は負けています。それが物事を明確にするのに役立つことを願っています。免責事項:私はSmartyStreetsの開発者でした。 住所データを使用したジオコーディングの詳細
あなたが求めているのは、「無料の郵便番号ジオコーディング」を提供するサービスです。品質の異なるものがいくつかあります。いくつかの理由により、このようなものを自分でコーディングするのに苦労するでしょう。
GoogleマップにはジオコーディングAPIがあります:
グーグルマップAPIはクライアントサイドのJavaScriptです。 httpリクエストを使用して、phpからジオコーディングシステムに直接クエリを実行できます。ただし、グーグルマップは米国郵政公社が提供するものしか提供しません。郵便番号の中心を表すポイント。
https://developers.google.com/maps/#Geocoding_Examples
郵便番号を緯度/経度の境界ボックスに投影することについての考え
米国には約43,000の郵便番号があります。この数は、加えられた変更の数に応じて、月ごとに変動します。 USPSで使用される郵便番号はポリゴンとして表されておらず、ハード境界と高速境界がありません。
USPS(United States Postal Service)は、各郵便番号lat/longを定義する機関です。郵便番号を地理的な場所に解決するソフトウェアは、毎週更新する必要があります。 alignstarと呼ばれる1つの会社は、郵便番号の人口統計とGISデータを提供しています( http://www.alignstar.com/data.html )。
物理的な(郵送先)住所を指定して、その場所を地図上に表示するために地理座標を見つけます。
郵便番号がどのような形であるかを確実に予測したい場合は、ブルートフォース攻撃を行い、「郵便番号ですべての住所を教えてください」と尋ねてから、形の悪いブロブの周りにボックスをペイントする必要があります。次に、郵便番号がカバーする地理的領域の一般的な感触を得ることができます。
http://vterrain.org/Culture/geocoding.html
何百万もの郵送先住所ポイントをアルゴリズムに投入して、すべてを緯度/経度に解決する場合、その郵便番号の基本的なブロブ境界ボックスを作成できる可能性があります。このアルゴリズムを再実行する必要があり、理論的には郵便番号が移動するたびに自動的に回復します。
その他のアイデア
http://shop.delorme.com/OA_HTML/DELibeCCtpSctDspRte.jsp?section=10075
これが必要なものだと思います。リポジトリとして米国国勢調査を使用します。USZipcodeBoundariesAPI: https://www.mashape.com/vanitysoft/boundaries-io
上記のAPIは、郵便番号、都市、および州ごとのUS Boundaries(GeoJson)を示しています。大きな結果を処理するには、プログラムでAPIを使用する必要があります。