Có API để xác định các quốc hội không? [đóng cửa]


11

Tôi đang tìm cách xác định khu vực quốc hội dựa trên địa chỉ mà người dùng của tôi đang cung cấp. Điều này sẽ tránh việc người dùng tự tìm kiếm nó.

API có tồn tại không?

Ghi chú

Thông qua những nỗ lực của tôi để tìm một cái, tôi chỉ bắt gặp những điều sau:

  • http://www.govtrack.us/developers/api
    (tuy nhiên không chắc chắn cách gửi địa chỉ hoặc mã zip)

    Các tài nguyên sau đây có sẵn trong API

    ... Dự luật và nghị quyết tại Quốc hội Hoa Kỳ kể từ năm 1973 (Đại hội 93).

    ... Một cặp (hóa đơn, người) biểu thị sự đồng tài trợ, với ngày tham gia và rút tiền.

    ... Thành viên của Quốc hội và Tổng thống Hoa Kỳ kể từ khi thành lập quốc gia.

    ... Các điều khoản được tổ chức tại văn phòng bởi các Thành viên của Quốc hội và Tổng thống Hoa Kỳ. Mỗi nhiệm kỳ tương ứng với một cuộc bầu cử, nghĩa là mỗi nhiệm kỳ tại Hạ viện bao gồm hai năm (một 'Quốc hội'), với tư cách là Chủ tịch bốn năm và tại Thượng viện sáu năm (ba 'Đại hội').

    ... Cuộn phiếu bầu trong Quốc hội Hoa Kỳ kể từ năm 1789. Cách mọi người bỏ phiếu được truy cập thông qua API Vote_voter.

    ... Cách mọi người bỏ phiếu cho phiếu bầu chọn trong Quốc hội Hoa Kỳ kể từ năm 1789. Xem API Bầu chọn. Lọc trên trường bỏ phiếu để nhận kết quả của một phiếu bầu cụ thể ...

  • http://www.opencongress.org/api
    (dường như là một cách để tìm thông tin đại hội, nhưng không phải là các quận)

    API này cung cấp cho các lập trình viên quyền truy cập có cấu trúc vào tất cả dữ liệu trên OpenCongress, mọi thứ từ thông tin hóa đơn chính thức đến tin tức và phạm vi blog đến phiếu bầu do người dùng tạo ra trên hóa đơn và hơn thế nữa ...

    API này mặc định trả về XML. Tất cả các truy vấn cũng có thể trả về JSON ...

  • https://groups.google.com/forum/?fromgroups=#!topic/opendems-discuss/CeKyi_aANaE
    (câu hỏi tương tự, không có giải pháp)

    Tôi đã xem qua Open Dems và thấy những gì tiếp xúc vào thời điểm này và những gì không. Tôi làm việc với đảng Dân chủ ở nước ngoài, và quan tâm đến việc sử dụng những thứ từ phòng thí nghiệm cho các trang web của họ.

    Tôi nhanh chóng xem qua API khu vực, nó thực hiện nhiều hơn và ít hơn những gì tôi cần. Một nguồn tài nguyên lý tưởng sẽ là bất kỳ cách nào để dịch địa chỉ thành CD ít nhất (lấy dữ liệu của tiểu bang cũng tốt), vì điều đó sẽ giúp thành viên của DA dễ dàng tạo ra sự khác biệt trong các cuộc đua như cuộc đua NY26 tháng trước .. .

Cập nhật

Tôi đang xem nguồn cho trang web govtrack.us và chức năng 'doGeoCode' có thể hữu ích.

nguồn xem: http: //www.govtrack.us/congress/members

Nếu không ai có bất kỳ đề nghị nào, tôi sẽ cố gắng bỏ qua những gì họ đang làm.


1
Tôi đã cập nhật câu hỏi của tôi với một số nơi tôi đã tìm kiếm.
ardavis

Có thể có ý nghĩa khi chuyển cái này sang StackOverflow, hoặc tìm lại nó ở đó và liên kết nó ở đây, vì đây là một câu hỏi hợp lệ, quan trọng và hữu ích.
Chris Moschini

Câu trả lời:


7

Tôi chưa sử dụng nó, nhưng một tìm kiếm nhanh đã đưa tôi đến API của Đại hội từ Sunlight Labs. Kiểm tra phương thức quận.getDistlandsFromZip của họ - dường như đó là những gì bạn đang tìm kiếm. Bạn có thể nhận được kết quả mã hóa địa lý chính xác hơn (chính xác hơn) và sau đó sử dụng quận.getDistrictFromLatLong - Tôi cho rằng một mã zip nhất định có thể vượt qua ranh giới quận.


1
Cảm ơn bạn @Caleb. Tôi đã không bắt gặp điều đó khi tôi đang tìm kiếm, đó dường như chính xác là những gì tôi đang tìm kiếm. Tôi rât cảm kich.
ardavis

Cập nhật: Trang khóa API của Sunlight không hoạt động nữa.
Seth Connell

4

API công dân Google là giải pháp tốt nhất. Một lần truy cập API duy nhất giúp bạn có cả Quan chức được bầu và Quận.

Bạn có thể nhận được các Quận bằng các hợp đồng GPS (lat / lng) như vậy:

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-inif/docs/v2/interesentative/interesentativeInfoByAddress

Bạn có thể nhận được thông tin tương tự cho thông tin cấp nhà nước bằng cách sử dụng OpenStates :

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

Chương trình bổ sung về API công dân Google thường xuyên đi xuống

API Google Civilics mơ hồ về việc nó có hỗ trợ lat / lng hay không, và cứ sau vài tháng, nó sẽ ngừng hỗ trợ lat / lng trong một tháng hoặc lâu hơn, cho đến khi ai đó báo cáo và Google thông báo, hay cụ thể hơn là một nhân viên có lẽ đã làm việc này trong các thông báo thời gian tình nguyện của họ ("Chelan") và xem xét sửa nó:

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

Nếu dịch vụ của bạn mong đợi dữ liệu API của Civilics sẽ bị sập và nếu nó yêu cầu dữ liệu API của Civilics là hữu ích, nó có thể không bị sập nhưng nó sẽ vô dụng trong nhiều tháng. Thất bại gần đây nhất là toàn bộ thời gian bỏ phiếu cho hầu hết các bang trong năm 2018, vì vậy, đó hoàn toàn là thời gian chết.

Bạn có thể chơi phòng thủ bằng cách mã hóa địa lý rõ ràng:

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);

Vì vậy, ở đây, chúng tôi đi qua HTML5 yêu cầu vị trí của người dùng và nếu họ nói Không / Chặn, chúng tôi sẽ hiển thị cho họ thông báo "Không thể nhận vị trí của bạn" (với GeoFail). Sau đó, chúng tôi đã có lat / lng, nhưng, Google Civilics API không ổn định nên chúng tôi sẽ hỏi Google một cách rõ ràng về địa chỉ. Điều đó trở lại là r [0] .formatted_address, trong một số câu trả lời, Google khuyên bạn nên hiển thị cho người dùng để xác nhận vị trí họ đang tìm kiếm. Vì vậy, chúng tôi đặt nó trong hộp văn bản địa chỉ và gửi nó qua loadReps(lat, lng, address).

Lưu ý rằng có thể cuộc gọi mã địa lý có thể thất bại (bao gồm cả do kết nối internet không ổn định), nhưng, đôi khi API Google Civilics hoạt động đầy đủ, do đó, không cần từ chối kết quả của người dùng trong kịch bản này; phần phụ trợ tôi đã viết trong trường hợp này có thể chấp nhận lat / lng và địa chỉ tùy chọn và chấp nhận địa chỉ bị thiếu. Sau đó, nó cố gắng nói chuyện với Google Civilics API và, nếu không nhận được gì, nó cần tồn tại điều đó và nói với người dùng rằng API công dân bị hỏng, xin lỗi.

Câu trả lời lịch sử

API của Đại hội từ Sunlight Foundation * chỉ dành cho Liên bang - không có cấp tiểu bang, nếu điều đó quan trọng với bạn. Và [Sunlight Foundation đang ngừng hoạt động, vì họ không muốn sao chép những nỗ lực của GovTrack.

API của GovTrack * hoàn thiện hơn. Họ /rolelà gần nhất với câu hỏi của bạn:

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

Nó cho bạn biết tất cả các Thượng nghị sĩ và thành viên Hạ viện hiện tại, và khi cuộc bầu cử tiếp theo của họ là. Vì vậy, bạn có một gánh nặng lọc.

Đối với nội dung ở cấp tiểu bang mà bạn muốn OpenStates.org, như:

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

https://openstates.org/

* Tin xấu, tất cả mọi thứ đang tắt tất cả thời gian. Sunlight Foundation đã tắt API của họ để tránh trùng lặp công việc của Govtrack. Govtrack đang đóng cửa của họ ngay bây giờ , để tránh trùng lặp công việc của ProPublica. Nhưng Propublica dường như không cung cấp cho bạn quận từ vị trí nào cả:

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

Vì vậy, chờ đợi bạn có thể nói, điều đó vô nghĩa, bởi vì trang web Đại diện của ProPublica , được chuyển từ dự án Đại diện tắt máy của NYTimes, cho phép bạn lập bản đồ địa chỉ và nhận quận từ các hợp đồng GPS. Và họ liên kết với API của họ từ trang đó. Cũng đánh lừa bạn, vì trang đó không sử dụng API của họ. Trên thực tế, nó sử dụng API tìm kiếm quận của Sunlight Foundation.

Thật là một mớ hỗn độn.


2
Một đại diện từ ProPublica đề nghị tôi sử dụng API của Google Thông tin Civic ( developers.google.com/civic-information/docs/v2/representatives/... )
kmoser

1
@kmoser Cảm ơn - Tôi nhận được phản hồi tương tự. Cập nhật câu trả lời.
Chris Moschini

2

Tôi nhận ra câu hỏi này đã cũ, nhưng tôi nghĩ rằng tôi sẽ ném hai xu của mình cho bất cứ ai vẫn có thể tìm kiếm.

Đầu tiên, một số thông tin cơ bản. Các khu vực của Quốc hội là cực kỳ cụ thể - xuống một địa chỉ, không chỉ đường phố. Tôi và hàng xóm bên kia đường có thể ở các quận quốc hội khác nhau. Đây là lý do tại sao rất quan trọng để có được mã ZIP + 4 tốt để đảm bảo rằng bạn đang đặt địa chỉ vào đúng quận. Một hệ thống (như SmartyStreets hoặc Melissa Data hoặc QAS, v.v.) có xác thực địa chỉ sẽ cung cấp cho bạn một ZIP + 4 đáng tin cậy để đảm bảo rằng khu vực là chính xác.

SmartyStreetsAPI LiveAddress của họ , trả về dữ liệu quốc hội cùng với hơn 40 điểm dữ liệu khác (mã địa lý, khu dân cư so với thương mại, v.v.).


Với IL-04, tôi thậm chí không chắc chắn rằng ZIP + 4 sẽ có được khu vực thích hợp. (Geojson trong một ý chính tại gist.github.com/anonymous/f2e46f17275f6dbb68db được sao chép từ github.com/benbalter/congressional-district/blob/gh-pages/IL/ do vì hiện tại không hiển thị).

... Mặc dù vậy, nó nói rằng zip + 4 sẽ đưa bạn đến một tòa nhà và bao gồm thông tin như bạn đang ở phía nào của con phố. Vì vậy, có thể, nhưng sau đó xem xét rằng bộ zip + 4 ánh xạ tới một quận sẽ là số lượng các tòa nhà trong quận đó có thể khó sử dụng.

0

Melissa Data tạo ra các công cụ để xác minh địa chỉ bao gồm thông tin về các khu vực chính trị. Tôi không biết họ có api công khai không; liên kết ở trên sẽ đưa bạn đến một trang tra cứu địa chỉ. Họ cung cấp một số lượng giới hạn tìm kiếm miễn phí có thể được tăng lên với một thuê bao . Vui lòng kiểm tra các điều khoản sử dụng của họ trước khi đưa nó vào một ứng dụng sản xuất.

Mặc dù dữ liệu của họ được cập nhật hàng tháng, tôi đã nhận thấy rằng một số dữ liệu không phản ánh việc phân phối lại gần đây.

Nhiều tiểu bang có sẵn thông tin này, nhưng tôi nghi ngờ rằng có bất kỳ sự nhất quán nào trong việc thực hiện chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.