議会地区を決定するためのAPIはありますか?[閉まっている]


11

ユーザーが提供している住所に基づいて議会地区を決定したいと考えています。これにより、ユーザーが自分で検索する必要がなくなります。

この種のAPIは存在しますか?

注意

見つけようとする試みを通して、私はこれらに出会っただけです:

  • http://www.govtrack.us/developers/api
    (ただし、住所または郵便番号の送信方法がわからない)

    次のリソースがAPIで利用可能です

    ... 1973年以降の米国議会(第93回議会)での法案と決議。

    ...参加と撤回の日付を含む、共催を示す(請求書、個人)ペア。

    ...建国以来の議員と米国大統領。

    ...議会の議員と米国大統領が任期を務める。各任期は選挙に対応します。つまり、下院の各任期は2年(1回の「議会」)、大統領として4年、上院では6年(3回の「議会」)をカバーします。

    ... 1789年以来、米国議会での投票の投票。人々の投票方法は、Vote_voter APIからアクセスできます。

    ... 1789年以来、米国議会でのロールコール投票での投票方法。投票APIを参照してください。投票フィールドでフィルタリングして、特定の投票の結果を取得します...

  • http://www.opencongress.org/api
    (地区ではなく議会情報を検索する方法のようです)

    このAPIは、OpenCongressのすべてのデータへの構造化されたアクセス、公式請求書情報からニュースやブログの報道、請求書に対するユーザー生成の票など、プログラマーに構造化されたアクセスを提供します。

    このAPIはデフォルトでXMLを返します。すべてのクエリはJSONも返すことができます...

  • https://groups.google.com/forum/?fromgroups=#!topic/opendems-discuss/CeKyi_aANaE
    (同様の質問、解決策なし)

    私はOpen Demsに目を通し、この時点で何が公開され、何が公開されていないかを見てきました。私は海外の民主党員と仕事をしており、彼らのサイトに研究室の資料を使用することに興味があります。

    私はすぐにPrecinct APIに目を通しました。これは、必要なものよりも多くの機能を備えています。理想的なリソースは、住所を少なくともCDに変換する方法です(州の地区データを取得することも良いでしょう)。これにより、先月のNY26レースのようなレースでDAのメンバーシップが違いを生みやすくなります。 。

更新

私はgovtrack.usウェブサイトのソースを見ていますが、「doGeoCode」機能が役に立つかもしれません。

view-source:http://www.govtrack.us/congress/members

誰も提案がなければ、私は彼らがしていることをやめようとします。


1
私が見ているいくつかの場所で質問を更新しました。
-ardavis

これはStackOverflowに移動するか、そこにリスキーして、ここにリンクするのが理にかなっているかもしれません。これは、有効で重要かつ有用な質問だからです。
クリスモスキーニ

回答:


7

使用していませんが、簡単な検索でSunlight LabsからCongress APIにアクセスしました。彼らのdistricts.getDistrictsFromZipメソッドをチェックしてください-あなたが探しているもののようです。自分で住所をジオコーディングし、districts.getDistrictFromLatLongを使用すると、より良い(より正確な)結果が得られる可能性があります-特定の郵便番号が地区の境界を越えることができると思います。


1
@Calebありがとう。私が探していたとき、私はそれを見つけていませんでした、それはまさに私が探しているもののようです。それは有り難いです。
-ardavis

更新:Sunlight APIキーページはもう機能しません。
セスコネル

4

Google Civics APIは最適なソリューションです。1回のAPIヒットで、選挙で選ばれた役人と地区の両方が得られます。

次のようにGPS座標(緯度/経度)で地区を取得できます。

public async Task<GoogleCivicsResult> FetchAndParseUSDistrictAsync(
    decimal lat, decimal lng, string address = null)
{
    string googleApiKey = App.GoogleApiKey;
    string reqAddr = Uri.EscapeDataString(address ?? lat + "," + lng);
    string url = "https://www.googleapis.com/civicinfo/v2/representatives?alt=json&key={0}&address={1}";
    url = String.Format(url, googleApiKey, reqAddr);

    var req = new HttpWebRequestAsync(url);
    var data = await req.GetStringAsync();

    var result = JsonConvert.DeserializeObject<GoogleCivicsResult>(data);

    return result;
}

public class GoogleCivicsResult
{
    public Address normalizedInput { get; set; }

    public Dictionary<string, Division> divisions { get; set; }

    public Office[] offices { get; set; }

    public Official[] officials { get; set; }
}

public class Address
{
    public string line1 { get; set; }
    public string line2 { get; set; }
    public string city { get; set; }
    public string state { get; set; }
    public string zip { get; set; }
}

public class Division
{
    public string name { get; set; }

    public int[] officeIndices { get; set; }

    public Office[] offices { get; set; }
}

public class Office
{
    // President of the United States
    // United States Senate
    // United States House of Representatives FL-06
    // Governor
    // Lieutenant Governor
    // Attorney General
    // Sheriff
    // County Judge
    // Council Chair
    public string name { get; set; }

    // ocd-division/country:us/state:fl/cd:6
    // ocd-division/country:us/state:fl
    // ocd-division/country:us/state:fl/county:volusia
    public string divisionId { get; set; }

    // administrativeArea1
    public string[] levels { get; set; }

    // legislatorUpperBody
    // legislatorLowerBody
    // headOfGovernment
    // deputyHeadOfGovernment
    public string[] roles { get; set; }

    public int[] officialIndices { get; set; }
}

public class Official
{
    public string name { get; set; }
    public Address[] address { get; set; }
    public string party { get; set; }
    public string[] phones { get; set; }
    public string[] urls { get; set; }
    public string photoUrl { get; set; }
    public Social[] channels { get; set; }
    public string[] emails { get; set; }
}

public class Social
{
    public string type { get; set; }
    public string id { get; set; }
}

https://developers.google.com/civic-information/docs/v2/representatives/representativeInfoByAddress

OpenStatesを使用して、状態レベルの情報についても同様に取得できます。

"http://openstates.org/api/v1/legislators/geo/?apikey={0}&lat={1}&long={2}";

頻繁にダウンするGoogle Civics APIに関する補遺

Google Civics APIは、lat / lngをサポートしているかどうかについて曖昧であり、数か月ごとに、誰かが報告してGoogleが通知するか、より具体的には1人の従業員に通知するまで、lat / lngのサポートを1か月程度停止しますおそらくボランティアの時間通知( "Chelan")でこれに取り組んでおり、修正を検討しています。

https://groups.google.com/d/msg/google-civicinfo-api/0td48h7JxYA/Zhij3yQiCgAJ

サービスがCivics APIデータを予期している場合、クラッシュします。また、Civics APIデータの有用性が必要な場合、クラッシュすることはありませんが、一度に数か月は役に立ちません。最も最近の失敗は2018年のほとんどの州の投票期間全体であったため、それはかなりのダウンタイムです。

明示的に逆ジオコーディングすることにより、防御を行うことができます。

if (!(navigator && navigator.geolocation))
    return geoFail();

navigator.geolocation.getCurrentPosition(function (position) {
    var coords = position.coords;
    var lat = coords.latitude;
    var lng = coords.longitude;

    if (!lat || !lng)
        return geoFail();

    var geocoder = new google.maps.Geocoder;
    geocoder.geocode({ 'location': { lat: lat, lng: lng } },
            function (r, status) {
        if (status !== 'OK' || !r || !r.length) {
            loadReps(lat, lng);
            return;
        }

        var address = r[0].formatted_address;
        $('#address').val(address);
        loadReps(lat, lng, address);
    });
}, geoFail);

そこで、ここでは通常のHTML5でユーザーの場所を尋ね、ユーザーが[いいえ]または[ブロック]と言ったら、「場所を取得できませんでした」というメッセージを表示します(geoFailを使用)。lat / lngを取得しましたが、Google Civics APIは不安定なので、Googleに明示的に住所を尋ねます。これはr [0] .formatted_addressとして返されます。いくつかの回答では、検索中の場所を確認するためにユーザーに表示することを推奨しています。それをアドレステキストボックスに入れて、経由で送信しますloadReps(lat, lng, address)

ジオコードコールが失敗する可能性があることに注意してください(インターネット接続が不安定な場合を含む)。ただし、Google Civics APIが完全に動作している場合もあるため、このシナリオではユーザーに結果を拒否する必要はありません。この場合に書いたバックエンドは、lat / lngおよびオプションのアドレスを受け入れ、アドレスの欠落を許容できます。その後、Google Civics APIと通信しようとしますが、何も得られない場合は、それを乗り越えてCivics APIが壊れていることをユーザーに通知する必要があります。

歴史的な答え

Sunlight Foundation *のCongress APIは連邦政府のみであり、州レベルではありません。また、[Sunlight Foundationは、GovTrackの取り組みを複製したくないため、閉鎖しています。

GovTrackのAPI *はより完全です。彼ら/roleはあなたの質問に最も近いです:

https://www.govtrack.us/developers/api#endpoint_role

現在のすべての上院議員と下院議員、そして彼らの次の選挙がいつであるかを教えてくれます。したがって、フィルタリングの負担が発生します。

OpenStates.orgが必要な州レベルのものには、次のようなものがあります。

http://openstates.org/api/v1/legislators/geo/?apikey= {0}&lat = {1}&long = {2}

https://openstates.org/

*悪いニュース、すべてが常にシャットダウンしています。Sunlight Foundationは、 Govtrackの作業の重複を避けるためにAPIをシャットダウンしましたGovtrackは、ProPublicaの作業の重複を避けるために、現在それらをシャットダウンしています。しかし、Propublica'sは、場所から地区をまったく提供していないようです。

https://projects.propublica.org/api-docs/congress-api/

NYTimesのシャットダウンRepresentプロジェクトから転送されたProPublicaのRepresentサイトでは、住所をマッピングし、GPS座標から地区を取得できるため、意味がありません。そして、そのページからAPIにリンクします。そのページはAPIを使用していないためです。実際、Sunlight Foundationの地区検索APIを使用しています。

なんてこった


2
ProPublicaの代表者は、GoogleのCivic Information API(developers.google.com/civic-information/docs/v2/representatives/…)を使用することを提案しました
kmoser

1
@kmoserありがとう-私は同じ反応を得ました。更新された回答。
クリスモスキーニ

2

私はこの質問が古いことを理解していますが、まだ探しているかもしれない人のために2セントを投じるだろうと考えました。

最初に、いくつかの背景情報。議会地区は非常に具体的です-通りだけでなく、住所自体まで。私と通りの向こうの隣人は、異なる議会地区にいる可能性があります。これが、正しい地区に住所を確実に配置するために、優れたZIP + 4コードを取得することが非常に重要な理由です。アドレスの検証を行うシステム(SmartyStreets、Melissa Data、QASなど)は、地区が正しいことを確認するための信頼できるZIP + 4を提供します。

SmartyStreetsにLiveAddress APIがあり、議会データと40を超える他のデータポイント(ジオコード、住宅と商業など)を返します。


IL-04を考えると、ZIP + 4が適切な地区を取得するかどうかさえわかりません。(gist.github.com/anonymous/f2e46f17275f6dbb68dbの要点にあるgeojsonは、github.com / benbalter / congressional-districts / blob / gh-pages / IL / ...からコピーされているため、現時点ではレンダリングされていません)。

...しかし、zip + 4はあなたを建物に連れて行くべきだと言っており、通りのどちら側にいるかなどの情報が含まれています。そのため、多分ですが、地区にマッピングされるzip + 4のセットは、その地区内の扱いにくい建物の数になると考えてください。

0

Melissa Dataは、政治地区に関する情報を含む住所確認ツールを作成しています。パブリックAPIがあるかどうかはわかりません。上記のリンクをクリックすると、住所検索ページに移動します。彼らは、サブスクリプションで増やすことができる限られた数の無料検索を提供します。これを本番アプリケーションに入れる前に、使用条件を確認してください。

それらのデータは毎月更新されますが、その一部は最近の再制限を反映していないことに気付きました。

多くの州ではこの情報を利用できますが、実装に一貫性があるとは思いません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.