Esiste una API per determinare i distretti congressuali? [chiuso]

10

Sto cercando di determinare il distretto congressuale sulla base di un indirizzo che il mio utente sta fornendo. Ciò eviterà all'utente di cercarlo da solo.

Esiste un'API di questo tipo?

Nota

Attraverso i miei tentativi di trovarne uno, ho trovato solo questi:

  • link
    (non so come inviare un indirizzo o un codice di avviamento postale comunque)

    The following resources are available in the API

    ...Bills and resolutions in the U.S. Congress since 1973 (the 93rd Congress).

    ...A (bill, person) pair indicating cosponsorship, with join and withdrawn dates.

    ...Members of Congress and U.S. Presidents since the founding of the nation.

    ...Terms held in office by Members of Congress and U.S. Presidents. Each term corresponds with an election, meaning each term in the House covers two years (one 'Congress'), as President four years, and in the Senate six years (three 'Congresses').

    ...Roll call votes in the U.S. Congress since 1789. How people voted is accessed through the Vote_voter API.

    ...How people voted on roll call votes in the U.S. Congress since 1789. See the Vote API. Filter on the vote field to get the results of a particular vote...

  • link
    (sembra essere un modo per trovare informazioni sul congresso, ma non per i distretti)

    This API provides programmers with structured access to all the data on OpenCongress, everything from official bill info to news and blog coverage to user-generated votes on bills and much more...

    This API defaults to returning XML. All queries can also return JSON...

  • link
    (domanda simile, nessuna risoluzione)

    I've been looking over Open Dems, and seeing what's exposed at this point and what isn't. I work with Democrats Abroad, and am interested in using stuff from the lab for their sites.

    I quickly looked over the Precinct API, which does both more and less than what I'd need. An ideal resource would be any way of translating addresses into CD at the very least (getting state district data would be good as well), since that would make it easier for DA's membership to make a difference in races like last month's NY26 race...

Aggiorna

Sto guardando la fonte del sito govtrack.us e la funzione 'doGeoCode' potrebbe essere utile.

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

Se nessuno ha suggerimenti, cercherò di andare fuori da quello che stanno facendo.

    
posta ardavis 09.11.2012 - 15:09
fonte

4 risposte

6

Non l'ho usato, ma una rapida ricerca mi ha portato a Congress API di Sunlight Labs. Dai un'occhiata al metodo districts.getDistrictsFromZip - sembra essere quello che stai cercando. Potresti ottenere risultati migliori (più precisi) per geocodificare l'indirizzo da te stesso e quindi utilizzare districts.getDistrictFromLatLong - Presumo che un determinato codice postale possa oltrepassare i confini del distretto.

    
risposta data 09.11.2012 - 17:42
fonte
3

L'API di Google Civics è la soluzione migliore. Un singolo hit API ti consente di essere entrambi funzionari e distretti eletti.

Puoi ottenere distretti tramite coordinate GPS (lat / lng) in questo modo:

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

link

Puoi ottenere informazioni simili a livello di stato usando OpenStates :

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

Addenda sull'API di Google Civics che scende frequentemente

L'API di Google Civics è vaga sul fatto che supporti lat / lng e, a distanza di qualche mese, smetterà di supportare lat / lng per circa un mese, fino a quando qualcuno non lo segnalerà e le notifiche di Google, o più specificamente, l'unico dipendente lì probabilmente sta lavorando su questo nei loro avvisi di volontariato ("Chelan") e cerca di risolverlo:

link

Se il tuo servizio si aspetta che i dati API Civics si blocchino, e se richiede che i dati API Civics siano utili, potrebbe non arrestarsi in modo anomalo ma sarà inutile per mesi alla volta. Il fallimento più recente è stato l'intero periodo di votazione per la maggior parte degli stati nel 2018, quindi, è piuttosto il tempo morto.

Puoi giocare difesa invertire esplicitamente il geocoding:

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

Quindi, qui passiamo attraverso il solito HTML5 per chiedere la posizione dell'utente, e se dicono No / Block mostriamo loro il messaggio "Non posso ottenere la tua posizione" (con geoFail). Poi abbiamo il lat / lng, ma l'API di Google Civics è irregolare, quindi andremo a chiedere esplicitamente a Google l'indirizzo. Questo ritorna come r [0] .formatted_address, che in alcune risposte Google consiglia di mostrare all'utente per confermare la posizione che sta cercando. Quindi lo inseriamo nella casella di testo dell'indirizzo e lo inviamo tramite loadReps(lat, lng, address) .

Tieni presente che è possibile che la chiamata geocode non abbia esito positivo (anche a causa di una connessione Internet instabile), ma a volte l'API di Google Civics è pienamente operativa, quindi non è necessario negare all'utente un risultato ancora in questo scenario; il backend che ho scritto in questo caso può accettare lat / lng e l'indirizzo opzionale, e tollerare l'indirizzo mancante. Quindi prova a parlare con l'API di Google Civics e, se non riceve nulla, deve sopravvivere e dire all'utente che l'API Civics è interrotta, mi spiace.

Risposta storica

L'API Congress di Sunlight Foundation * è solo federale - nessun livello di stato, se questo è importante per te. E [la Sunlight Foundation si sta spegnendo, perché non vogliono duplicare gli sforzi di GovTrack.

L'API di GovTrack * è più completa. Il loro /role è più vicino alla tua domanda:

link

Ti dice tutti gli attuali senatori e membri della Camera, e quando saranno le loro prossime elezioni. Quindi avresti un carico di filtro.

Per gli elementi a livello di stato che vuoi OpenStates.org, ad esempio:

link {0} & lat = {1} & long = {2 }

link

* Cattive notizie, tutto si sta spegnendo tutto il tempo. Sunlight Foundation chiude la loro API per evitare duplicare il lavoro di Govtrack. Govtrack sta chiudendo la loro ora , per evitare di duplicare il lavoro di ProPublica. Ma Propublica non sembra affatto distrarti dal luogo:

link

Quindi, si potrebbe dire che non ha senso, perché il sito Represent di ProPublica , che viene trasferito dallo spegnimento di NYTimes. progetto, ti consente di mappare un indirizzo e ottenere il distretto dalle coordinate GPS. E collegano alla loro API da quella pagina. Ti ho ingannato, perché la pagina non usa la loro API. In effetti, utilizza l'API di ricerca distretto di Sunlight Foundation.

Che casino.

    
risposta data 23.02.2016 - 15:39
fonte
2

Mi rendo conto che questa domanda è vecchia, ma ho pensato che avrei buttato i miei due centesimi per chiunque fosse ancora alla ricerca.

In primo luogo, alcune informazioni di base. I distretti congressuali sono estremamente specifici - fino a un indirizzo in sé, non solo alla strada. Io e il mio vicino di fronte potremmo trovarci in diversi distretti congressuali. Questo è il motivo per cui è così importante ottenere un buon codice ZIP + 4 per assicurarti di inserire l'indirizzo nel distretto corretto. Un sistema (come SmartyStreets o Melissa Data o QAS, ecc.) Che indirizza la convalida potrebbe fornire un ZIP + 4 affidabile per garantire che il distretto sia corretto.

SmartyStreets ha la sua API LiveAddress , che restituisce i dati del congresso insieme ad oltre 40 altri punti di dati (geocodici, residenziali vs commerciali, ecc.).

    
risposta data 25.04.2014 - 21:41
fonte
0

Dati di Melissa rende strumenti per la verifica degli indirizzi che include informazioni sui distretti politici. Non so se hanno una api pubblica; il link sopra ti porterà a una pagina di ricerca degli indirizzi. Offrono un numero limitato di ricerche gratuite che possono essere aumentate con un abbonamento . Si prega di verificare le loro condizioni d'uso prima di metterle in un'applicazione di produzione.

Mentre i loro dati vengono aggiornati mensilmente, ho notato che alcuni di essi non riflettono la recente riorganizzazione.

Molti stati hanno queste informazioni disponibili, ma dubito che ci sia una certa coerenza nella loro implementazione .

    
risposta data 09.11.2012 - 16:11
fonte

Leggi altre domande sui tag