의회 구역을 결정하기위한 API가 있습니까? [닫은]


11

사용자가 제공 한 주소를 기준으로 의회 지구를 결정하려고합니다. 이렇게하면 사용자가 직접 찾아 보지 않아도됩니다.

이런 종류의 API가 있습니까?

노트

하나를 찾으려고 노력하면서 나는 다음과 같은 것들을 만났습니다.

  • http://www.govtrack.us/developers/api
    (단, 주소 나 우편 번호를 제출하는 방법을 잘 모르겠습니다)

    API에서 다음 리소스를 사용할 수 있습니다

    ... 1973 년 이후 미국 의회의 청구 및 결의안 (93 차 의회).

    ... 가입 날짜와 철회 날짜가있는 협찬을 나타내는 (청구서, 사람) 쌍.

    ... 국민 창립 이래 국회의원과 미국 대통령.

    ... 의회 의원과 미국 대통령이 임기 한 임기. 각 임기는 선거와 일치합니다. 하원의 각 임기는 2 년 (1 개의 '의회'), 대통령의 4 년, 상원의 6 년 ( '3 개의'의회 ')을 의미합니다.

    ... 1789 년 이래 미국 의회에서 롤 콜 투표. 투표 방법은 Vote_voter API를 통해 액세스 할 수 있습니다.

    ... 1789 년 이후 사람들이 미국 의회에서 롤 콜 투표에 투표 한 방식. Vote API를 참조하십시오. 특정 투표 결과를 얻으려면 투표 필드를 필터링하십시오 ...

  • http://www.opencongress.org/api
    (회의 정보는 찾을 수 있지만 지구는 아님)

    이 API는 프로그래머에게 OpenCongress의 모든 데이터에 대한 구조화 된 액세스를 제공합니다. 공식 청구서 정보에서 뉴스 및 블로그 범위, 청구서에 대한 사용자 생성 투표 등에 이르기까지 모든 것이 있습니다 ...

    이 API는 기본적으로 XML을 반환합니다. 모든 쿼리는 JSON을 반환 할 수도 있습니다 ...

  • https://groups.google.com/forum/?fromgroups=#!topic/opendems-discuss/CeKyi_aANaE
    (유사한 질문, 해결책 없음)

    나는 Open Dems를 살펴 보았고,이 시점에서 노출되는 것과 보이지 않는 것을 보았습니다. 저는 Democrats Abroad와 함께 일하고 있으며 실험실에서 물건을 사이트에 사용하는 데 관심이 있습니다.

    Precinct API를 신속하게 살펴 보았습니다. Precinct API는 필요한 것보다 더 많고 적은 기능을 수행합니다. 이상적인 자원은 최소한 주소를 CD로 변환하는 모든 방법이 될 것입니다. (주 지구 데이터를 얻는 것도 좋을 것입니다.) 이는 지난 달의 NY26 경주와 같은 경주에서 DA의 멤버십이 더 쉽게 차이를 만들 수 있기 때문입니다. .

최신 정보

govtrack.us 웹 사이트의 소스를보고 있는데 'doGeoCode'기능이 유용 할 수 있습니다.

뷰 소스 : http : //www.govtrack.us/congress/members

아무도 제안이 없다면, 그들이하고있는 일에서 벗어나려고 노력할 것입니다.


1
내가보고있는 곳으로 내 질문을 업데이트했습니다.
ardavis

이것은 유효하고 중요하며 유용한 질문이므로 이것을 StackOverflow로 옮기거나 다시 가져와 여기에 연결하는 것이 좋습니다.
Chris Moschini

답변:


7

나는 그것을 사용하지 않았지만 빠른 검색으로 Sunlight Labs의 Congress API 를 찾았습니다 . 그들의 districts.getDistrictsFromZip 메소드를 확인하십시오 -그것은 당신이 찾고있는 것 같습니다. 주소를 지오 코딩 한 다음 districts.getDistrictFromLatLong 을 사용하여 더 나은 (보다 정확한) 결과를 얻을 수 있습니다 . 지정된 우편 번호가 지구 경계를 넘을 수 있다고 가정합니다.


1
@Caleb에게 감사합니다. 내가 검색 할 때 그것을 보지 못했습니다. 정확히 내가 찾고있는 것 같습니다. 감사합니다.
ardavis

업데이트 : Sunlight API 키 페이지가 더 이상 작동하지 않습니다.
세스 코넬

4

Google Civics API가 가장 좋은 솔루션입니다. 한 번의 API 방문으로 선출 된 공무원과 지구를 모두 얻을 수 있습니다.

다음과 같이 GPS 좌표 (lat / lng)로 지구를 구할 수 있습니다.

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는 위도 / 경도를 지원하는지 여부에 대해 모호하며, 몇 달마다 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 포함). 그런 다음 위도 / 경도를 얻었지만 Google Civics API가 불규칙하므로 Google에 주소를 명시 적으로 요청합니다. r [0] .formatted_address로 돌아옵니다. 일부 답변에서는 사용자가 찾는 위치를 확인하도록 사용자에게 보여줄 것을 권장합니다. 주소 텍스트 상자에 넣고를 통해 보내십시오 loadReps(lat, lng, address).

지오 코드 호출 (실제 인터넷 연결 포함)이 실패 할 수 있지만 때때로 Google Civics API가 완전히 작동하기 때문에이 시나리오에서 아직 사용자에게 결과를 거부 할 필요가 없습니다. 이 경우에 작성한 백엔드는 위도 / 경도 및 선택적 주소를 허용하고 누락 된 주소를 허용 할 수 있습니다. 그런 다음 Google Civics API와 대화하려고 시도하지만 아무것도 얻지 못하면 생존하고 사용자에게 Civics API가 손상되었다고 알려줍니다. 죄송합니다.

역사적 답변

Sunlight Foundation *의 의회 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/

* 나쁜 소식, 모든 것이 항상 종료됩니다. Govtrack의 작업이 중복 되지 않도록 Sunlight Foundation에서 API를 종료했습니다 . Govtrack은 ProPublica의 작업이 중복되는 것을 피하기 위해 지금 종료하고 있습니다. 그러나 Propublica 's는 당신에게 지역을 전혀 제공하지 않는 것 같습니다 :

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

NYTimes의 Shutdown Represent 프로젝트에서 전송 된 ProPublica의 Represent site 는 주소를 매핑하고 지구를 GPS 코디네이터로부터 가져 오게 하므로 말이 안될 수도 있습니다. 그리고 해당 페이지에서 API로 연결됩니다. 그 페이지는 API를 사용하지 않습니다. 실제로 Sunlight Foundation의 지역 검색 API를 사용합니다.

엉망이야


2
ProPublica의 담당자는 Google의 Civic Information API ( developers.google.com/civic-information/docs/v2/representatives/… )를 사용하도록 제안 했습니다.
kmoser

1
@kmoser 감사합니다-같은 응답을 받았습니다. 답변이 업데이트되었습니다.
Chris Moschini

2

나는이 질문이 오래되었다는 것을 알고 있지만 여전히 찾고있는 사람을 위해 2 센트를 던질 것이라고 생각했습니다.

먼저 배경 정보가 있습니다. 의회 구역은 거리가 아니라 주소 자체까지 매우 구체적입니다. 길 건너편에있는 저와 이웃은 다른 의회 지역에있을 수 있습니다. 이것이 올바른 지구에 주소를 배치하기 위해 좋은 ZIP + 4 코드를 얻는 것이 매우 중요한 이유입니다. 유효성 검사를 수행하는 시스템 (SmartyStreets 또는 Melissa Data 또는 QAS 등)은 지구가 정확하도록 신뢰할 수있는 ZIP + 4를 제공합니다.

SmartyStreets 에는 LiveAddress API가 있습니다 .이 API 는 40 개 이상의 다른 데이터 포인트 (지오 코드, 주거용 및 상업용 등)와 함께 의회 데이터를 반환합니다.


IL-04가 주어진다면 ZIP + 4가 적절한 지역을 확보 할 수 있을지 확신 할 수 없습니다. (의 요지에 geojson gist.github.com/anonymous/f2e46f17275f6dbb68db 에서 복사 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.