มี API สำหรับกำหนดเขตรัฐสภาหรือไม่? [ปิด]


11

ฉันกำลังมองหาเพื่อกำหนดเขตรัฐสภาตามที่อยู่ที่ผู้ใช้ของฉันให้ สิ่งนี้จะหลีกเลี่ยงไม่ให้ผู้ใช้ค้นหาด้วยตนเอง

API ของการจัดเรียงนี้มีอยู่จริงหรือไม่?

บันทึก

จากความพยายามของฉันในการค้นหาฉันพบเจอสิ่งเหล่านี้เท่านั้น:

  • http://www.govtrack.us/developers/api
    (ไม่แน่ใจว่าจะส่งที่อยู่หรือรหัสไปรษณีย์อย่างไร)

    ทรัพยากรต่อไปนี้มีอยู่ใน API

    ... ตั๋วเงินและมติในรัฐสภาคองเกรสแห่งสหรัฐอเมริกาตั้งแต่ปี 2516 (การประชุมครั้งที่ 93)

    ... คู่ (บิล, คน) ที่แสดง cosponsorship พร้อมวันที่เข้าร่วมและถอนตัว

    ... สมาชิกรัฐสภาและประธานาธิบดีสหรัฐฯนับตั้งแต่ก่อตั้งประเทศ

    ... ข้อกำหนดในสำนักงานของสมาชิกรัฐสภาและประธานาธิบดีสหรัฐฯ แต่ละเทอมสอดคล้องกับการเลือกตั้งหมายถึงแต่ละเทอมในสภาครอบคลุมสองปี (หนึ่งสภาคองเกรส) ในฐานะประธานาธิบดีสี่ปีและในวุฒิสภาหกปี (สามของรัฐสภา)

    ... สะสมคะแนนโหวตในรัฐสภาคองเกรสแห่งสหรัฐอเมริกาตั้งแต่ปี ค.ศ. 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 อย่างรวดเร็วซึ่งทำทั้งมากกว่าและน้อยกว่าที่ฉันต้องการ ทรัพยากรในอุดมคติจะเป็นวิธีการแปลที่อยู่ลงในแผ่นซีดีอย่างน้อยที่สุด (การรับข้อมูลเขตของรัฐจะดีเช่นกัน) เนื่องจากจะทำให้สมาชิกของ DA ง่ายขึ้นในการสร้างความแตกต่างในการแข่งขันเช่นการแข่งขัน NY26 ของเดือนที่แล้ว .. .

ปรับปรุง

ฉันกำลังดูแหล่งที่มาสำหรับเว็บไซต์ govtrack.us และฟังก์ชั่น 'doGeoCode' อาจมีประโยชน์

มุมมองแหล่งที่มา: http: //www.govtrack.us/congress/members

หากไม่มีใครมีข้อเสนอแนะใด ๆ ฉันจะพยายามออกจากสิ่งที่พวกเขากำลังทำอยู่


1
ฉันได้อัปเดตคำถามของฉันกับสถานที่ที่ฉันดูอยู่
ardavis

มันอาจจะเหมาะสมที่จะย้ายสิ่งนี้ไปที่ StackOverflow หรือ reask ที่นั่นและเชื่อมโยงที่นี่เนื่องจากนี่เป็นคำถามที่ถูกต้องสำคัญและมีประโยชน์
Chris Moschini

คำตอบ:


7

ฉันไม่ได้ใช้ แต่การค้นหาอย่างรวดเร็วนำฉันมาที่Congress APIจาก Sunlight Labs ตรวจสอบเขตของพวกเขาgetDistensionsFromZipวิธี - ดูเหมือนว่าจะเป็นสิ่งที่คุณกำลังมองหา คุณอาจได้ผลลัพธ์ที่ดีขึ้น (แม่นยำยิ่งขึ้น) ระบุตำแหน่งทางภูมิศาสตร์ด้วยตัวคุณเองแล้วใช้หัวเมือง getDistrictFromLatLong - ฉันคิดว่ารหัสไปรษณีย์ที่กำหนดสามารถข้ามเขตพื้นที่ได้


1
ขอบคุณ @Caleb ฉันไม่เจอว่าเมื่อฉันค้นหานั่นดูเหมือนจะเป็นสิ่งที่ฉันกำลังมองหา ฉันรู้สึกทราบซึ้ง.
ardavis

อัปเดต: หน้าคีย์ Sunlight API ไม่ทำงานอีกต่อไป
เซทคอนเนล

4

Google Civics API เป็นทางออกที่ดีที่สุด การเข้าสู่ API เดียวทำให้คุณได้รับทั้งเจ้าหน้าที่ที่ได้รับการเลือกตั้งและเขต

คุณสามารถรับย่านโดย GPS coords (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 นั้นคลุมเครือไม่ว่าจะรองรับ lat / lng และทุกๆสองสามเดือนหรือมากกว่านั้นก็จะหยุดสนับสนุน lat / lng เป็นเวลาหนึ่งเดือนหรือมากกว่านั้นจนกว่าจะมีคนรายงานและแจ้งให้ Google ทราบหรือเฉพาะเจาะจงพนักงานคนหนึ่ง อาจมีการทำงานในเรื่องนี้ในเวลาประกาศอาสาสมัครของพวกเขา ("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 ซึ่งในบางคำตอบ Google ขอแนะนำให้คุณแสดงต่อผู้ใช้เพื่อยืนยันตำแหน่งที่พวกเขากำลังมองหา loadReps(lat, lng, address)ดังนั้นเราจึงใส่ในช่องที่อยู่และส่งออกผ่านทาง

โปรดทราบว่าอาจเป็นไปได้ว่าการเรียกรหัสภูมิศาสตร์อาจล้มเหลว (รวมถึงเนื่องจากการเชื่อมต่ออินเทอร์เน็ตที่ไม่สม่ำเสมอ) แต่บางครั้ง Google Civics API ทำงานได้อย่างสมบูรณ์ดังนั้นจึงไม่จำเป็นต้องปฏิเสธผู้ใช้ผลลัพธ์ในสถานการณ์นี้ แบ็กเอนด์ที่ฉันเขียนในกรณีนี้สามารถยอมรับ lat / lng และที่อยู่เพิ่มเติมและยอมรับที่อยู่ที่ขาดหายไป จากนั้นจะพยายามพูดคุยกับ Google Civics API และหากไม่ได้รับอะไรก็ต้องอยู่รอดและแจ้งให้ผู้ใช้ทราบว่า Civics API นั้นใช้งานไม่ได้ขออภัยด้วย

คำตอบทางประวัติศาสตร์

Congress API จาก Sunlight Foundation * เป็นแบบสหพันธ์เท่านั้น - ไม่มีระดับรัฐหากคุณมีความสำคัญ และ [มูลนิธิ Sunlight กำลังปิดตัวลงเพราะพวกเขาไม่ต้องการทำซ้ำความพยายามของ GovTrack

API ของ GovTrack นั้นสมบูรณ์ยิ่งขึ้น พวกเขา/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 ปิด API เพื่อหลีกเลี่ยงการทำงานของ Govtrack ซ้ำ Govtrack กำลังปิดตัวลงในขณะนี้เพื่อหลีกเลี่ยงการทำงานที่ซ้ำซ้อนของ ProPublica แต่ดูเหมือนว่า Propublica จะไม่ให้ตำบลจากที่ใด ๆ กับคุณ:

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

ดังนั้นรอคุณอาจพูดว่ามันไม่มีเหตุผลเพราะไซต์ตัวแทน ProPublicaซึ่งถูกถ่ายโอนจากโครงการตัวแทนปิดของ NYTimes จะช่วยให้คุณแมปที่อยู่และรับอำเภอจาก coords GPS และพวกเขาลิงก์ไปยัง API จากหน้านั้น หลอกคุณได้ดีเพราะหน้านั้นไม่ได้ใช้ API ของพวกเขา ในความเป็นจริงมันใช้ API การค้นหาอำเภอของมูลนิธิ Sunlight

ช่างเป็นระเบียบ


2
ตัวแทนจาก ProPublica แนะนำให้ฉันใช้ Civic Information API ของ Google ( developers.google.com/civic-information/docs/v2/representatives/… )
kmoser

1
@kmoser ขอบคุณ - ฉันได้รับคำตอบเหมือนกัน อัปเดตคำตอบ
Chris Moschini

2

ฉันรู้ว่าคำถามนี้เก่า แต่ฉันคิดว่าฉันจะโยนสองเซ็นต์ของฉันสำหรับทุกคนที่อาจจะยังคงมองหา

ก่อนอื่นให้ข้อมูลพื้นหลังบางอย่าง เขตรัฐสภามีความเฉพาะอย่างยิ่ง - ลงไปยังที่อยู่ตัวเองไม่เพียง แต่ถนน ฉันและเพื่อนบ้านของฉันฝั่งตรงข้ามถนนอาจอยู่ในหัวเมืองรัฐสภาที่แตกต่างกัน นี่คือเหตุผลที่เป็นสิ่งสำคัญที่จะได้รับรหัส ZIP +4 ที่ดีเพื่อให้แน่ใจว่าคุณกำลังวางที่อยู่ในเขตที่ถูกต้อง ระบบ (เช่น SmartyStreets หรือ Melissa Data หรือ QAS เป็นต้น) ที่ใช้การตรวจสอบความถูกต้องจะให้ ZIP + 4 ที่เชื่อถือได้เพื่อให้แน่ใจว่าเขตนั้นถูกต้อง

SmartyStreetsมีLiveAddress APIซึ่งจะส่งคืนข้อมูลรัฐสภาพร้อมกับจุดข้อมูลอื่น ๆ กว่า 40 จุด (รหัสภูมิศาสตร์, ที่อยู่อาศัยและเชิงพาณิชย์เป็นต้น)


ระบุIL-04ฉันไม่แน่ใจด้วยซ้ำว่า ZIP + 4 จะได้รับเขตที่เหมาะสม (geojson เป็นส่วนหนึ่งที่gist.github.com/anonymous/f2e46f17275f6dbb68dbคัดลอกมาจากgithub.com/benbalter/congressional-distensions/blob/gh-pages/IL/…เนื่องจากไม่ได้แสดงผลในขณะนี้)

... แต่มันบอกว่า zip + 4 ควรนำคุณไปยังสิ่งปลูกสร้างและรวมถึงข้อมูลเช่นเดียวกับที่คุณอยู่ข้างถนน ดังนั้นบางที แต่ให้พิจารณาว่าชุด zip + 4 ที่แมปไปยังอำเภอหนึ่งจะเป็นจำนวนสิ่งปลูกสร้างในเขตนั้นซึ่งอาจไม่สะดวก

0

Melissa Dataสร้างเครื่องมือสำหรับการยืนยันที่อยู่ซึ่งมีข้อมูลเกี่ยวกับเขตการเมือง ฉันไม่ทราบว่าพวกเขามี API สาธารณะหรือไม่ ลิงค์ด้านบนจะนำคุณไปยังหน้าค้นหาที่อยู่ พวกเขามีจำนวน จำกัด ups ดูฟรีที่สามารถจะเพิ่มขึ้นด้วยการสมัครสมาชิก โปรดตรวจสอบข้อกำหนดการใช้งานของพวกเขาก่อนที่จะนำไปใช้ในการผลิต

แม้ว่าข้อมูลของพวกเขาจะได้รับการอัพเดททุกเดือน แต่ฉันสังเกตเห็นว่าข้อมูลบางอย่างไม่ได้สะท้อนการกำหนดใหม่ล่าสุด

หลายรัฐมีข้อมูลนี้ แต่ฉันสงสัยว่ามีความสอดคล้องในการดำเนินการของพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.