Existe-t-il des bases de données gratuites ou à prix raisonnable pour les États-Unis où il est possible d'effectuer une recherche et de renvoyer des informations de latitude et de longitude?
Existe-t-il des bases de données gratuites ou à prix raisonnable pour les États-Unis où il est possible d'effectuer une recherche et de renvoyer des informations de latitude et de longitude?
Réponses:
Pour autant d'enregistrements, n'envisagez même pas un service Web. Ils vont vous étrangler ou vous couper avant que vous puissiez finir votre tâche.
Vous avez alors la possibilité de l’exécuter localement et vous disposez pour cela de plusieurs options commerciales ou gratuites.
Les options libres utiliseront le jeu de données TIGER du recensement que vous devrez charger dans une base de données spatiale. Vous pouvez trouver des bibliothèques qui géocodent contre TIGER pour PostGIS ou même sqlite . Heck, vous pouvez même utiliser ArcGIS pour géocoder avec TIGER. Bien sûr, ArcGIS n’est pas gratuit, ce qui m’amène aux prochaines options commerciales. Si vous avez une licence ArcGIS, vous avez probablement un DVD StreetMap avec un jeu de données TeleAtlas ( je veux dire Tom Tom ) ou Navteq. Cela dépend si vous avez StreetMap Premium fourni. N'importe lequel de ces deux jeux de données vous donnera probablement des résultats plus cohérents que TIGER.
Faites-vous une faveur et faites plusieurs copies de la base de données de rues une fois vos données chargées, puis exécutez le processus de géocodage sur plusieurs machines avec un sous-ensemble de données en entrée. N'essayez pas de l'exécuter sur une seule machine, sinon vous attendrez plusieurs jours avant de la terminer, sans mentionner que le processus que vous exécutez est susceptible de fuir et de planter plusieurs fois avant la fin. Cela signifie que vous souhaitez avoir différents points de contrôle pour votre processus.
Je travaille chez SmartyStreets (une entreprise de vérification d’adresse). Notre service est gratuit pour tout le monde (jusqu'au niveau de base). Les startups peuvent également demander à utiliser notre service de manière totalement gratuite pour la première année. Donc, si vous correspondez à cette classification, notre service illimité est gratuit pendant un an.
Ragi recommande de ne pas utiliser un service Web. Cependant, notre API peut facilement nettoyer, normaliser et géocoder 20 millions d’adresses en environ 5 heures (environ 1 000 par seconde). Une partie de ce temps dépendra de la vitesse de votre machine (le nombre de cœurs que vous avez) et de votre connexion réseau (ne l’essayez pas en 3G, mais une connexion haut débit standard suffira).
Je voulais juste souligner que c'est certainement possible avec un service Web.
Mise à jour: Depuis le 1er août2017, j'ai testé notre service Web à distance et j'ai obtenu 70 000 recherches soutenues par seconde en utilisant un seul MacBook Pro 2015 sur un réseau sans fil. Oui c'est assez rapide. Cela signifie qu'une petite liste comme 20 millions d'adresses prendrait environ 5 minutes.
J'ai utilisé cette procédure pas à pas pour expliquer comment créer un géocodeur postgis à l'aide des données 2010 de TigerLine. Je l'utilise actuellement - ce n'est pas rapide, car il faudra 3 semaines pour géocoder 2 millions d'adresses.
Cependant, c'est gratuit, sans entrave, et il a fallu à quelqu'un avec des compétences minimales en codage et postgres moins de 2 jours pour configurer et charger avec les données d'un (grand) État pour commencer le géocodage. Je n'ai également effectué aucun réglage postgres pour le système et il tourne sur des montages NFS. Je suppose donc que je pourrais obtenir des gains de performances d'un ou deux ordres de grandeur, si j'en avais besoin.
Plutôt que d'utiliser des services Web, j'ai chargé toutes mes adresses dans la base de données postgres, puis j'exécute un script perl rapide et sale pour les géocoder toutes une à la fois:
perl -e for ($i=1; $i<[max_key_value]; $i+=1)
{printf "UPDATE source_addresses
SET (rating, new_address, lon, lat)
= (g.rating, pprint_addy(g.addy),
ST_X(g.geomout), ST_Y(g.geomout) )
FROM (SELECT DISTINCT ON (address_id) address_id, (g1.geo).*
FROM (SELECT address_id, (geocode(address)) As geo
FROM source_addresses As ag
WHERE ag.rating IS NULL and address_id = $i
) As g1
ORDER BY address_id, rating LIMIT 1
) As g WHERE g.address_id = source_addresses.address_id;\n"
} | psql -d geocoder
(les sauts de ligne sont uniquement destinés à la lisibilité)
Donc, cela génère une déclaration de mise à jour "géocodez l'adresse avec cette valeur d'ID et utilisez la meilleure correspondance" et dirigez-la vers psql. Il ne fait que tenter de géocoder des adresses sans classification - c’est-à-dire des adresses où elles ne sont pas déjà géocodées. Donc, il est possible de redémarrer, et chacun est fait indépendamment.
Je suppose que vous voulez géocoder mais que vous ne payez rien? Il existe une foule de services sur lesquels vous pouvez géocoder 20 millions d'enregistrements, mais cela vous coûtera cher. Esri, Pitney Bowes et autres offrent ces services par abonnement ou moyennant un coût par x géocodes. 20 millions, ce n'est pas anodin, mais je suppose qu'il y a une analyse de rentabilisation pour cela.
La localisation de vos données est très importante car la qualité des services Web change (précision, échelle, etc.). Je géocode mon adresse depuis google api, facebook api et ex-simplegeo avec ma géodatabase.
http://blog.programmableweb.com/2012/06/21/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/
Ce message est probablement trop tard pour aider l’affiche originale. Cependant, pour les autres personnes cherchant à géoréférencer gratuitement de grandes quantités de données, vous pouvez consulter mon logiciel appelé "Easy Georeferencer", qui est créé indépendamment, facile à utiliser et pourtant puissant (voir la capture d'écran au bas de l'article).
Le programme est simple et facile à utiliser et s’exécute directement à partir d’un fichier exe ne nécessitant aucune installation. Vous pouvez choisir de géocoder la source de données GNS ou GeoNames et vous pouvez faire ce qu'aucun autre géocodeur ne peut faire jusqu'à présent: géocoder les provinces en fonction de la base de données d'unités administratives GADM, ainsi que les bordures de pays historiques à partir du jeu de données CShapes. Le seul inconvénient est qu'il ne géocode pas les données d'adresse. Toutes les sorties sont fournies sous forme de fichiers de formes prêts à être visualisés / analysés immédiatement dans un SIG.
En ce qui concerne l'efficacité et le traitement des données volumineuses, le programme a été testé pour géocoder 100 000 enregistrements en seulement 3 heures. Pour les ensembles de données plus volumineux, l’augmentation attendue du temps de traitement devrait diminuer de manière curviligne, car une grande partie du temps de traitement n’est affectée qu’à la phase initiale au moment où les ensembles de données de référence pays sont chargés, mais reprend par la suite. De plus, vous n'avez pas à vous soucier des problèmes d'internet ou de connectivité Internet lors du géocodage de grands ensembles de données, car le logiciel, les ensembles de données de référence et le traitement sont tous basés sur l'ordinateur local. Les taux de correspondance peuvent atteindre 80 à 90%, car ils sont basés sur la correspondance des noms flous pour la prise en compte des différences orthographiques.
Plus de détails, y compris une introduction et un guide du débutant, sont inclus dans le package de téléchargement. Nul besoin d’être hésitant à l’essayer, le programme n’est qu’un simple fichier que vous pouvez placer et exécuter sur votre bureau, sans aucun engagement ni encombrement de votre ordinateur.
Le logiciel peut être téléchargé à partir de: http://geocodeanything.wordpress.com/
J'espère que ça t'as aidé.
Comme vous géocoderez des adresses américaines, je pense que l’ outil Adresse de la base de données de Data Science Toolkit devrait bien fonctionner pour vous.
This API takes either a single string representing a postal address, or a JSON-encoded array of addresses, and returns a JSON object with a key for every address. The value for each key is either null if no information was found for the address, or an object containing location information, including country, region, city and latitude/longitude coordinates.
Vous voudrez peut-être télécharger la machine virtuelle et l'exécuter à partir de votre propre matériel. De cette façon, vous n'avez pas à vous soucier des limites d'API et vous les contrôlez aussi. Oh et j'ai dit que c'est gratuit? ;-)
Je n'ai vu aucune référence au niveau de précision dont vous avez besoin, mais je suppose que vous voulez un toit long ou proche de celui-ci. La qualité de l'adresse d'entrée peut également être un facteur. Une liste d'adresses bien nettoyée codera mieux et plus rapidement qu'une liste d'adresses incomplètes ou erronées. En outre, un taux de réussite de 90% est-il acceptable ou avez-vous besoin que les 20 millions d'adresses soient codées? Je n'ai pas de solution gratuite, mais je connais et utilise une solution relativement peu coûteuse. ZP4 de Semaphore Corp, http://www.semaphorecorp.com/offre un nettoyeur / géocodeur d’adresses et des add-ons qui traiteront les adresses et renverront une adresse nettoyée, un indicateur indiquant si l’adresse est livrable USPS et le long lat pour le ZIP + 4. La précision ZIP + 4 est généralement proche de la précision sur le toit dans les zones bâties (bon côté de la rue et sur le bon bloc) et non fermée dans les zones rurales. Le coût d'une licence de 30 jours est de 120 $. Après cette période, l'épurateur d'adresses fonctionnera toujours, mais la validation du point de livraison (DPV) et les retours géographiques ne fonctionneront pas. Avec un ordinateur relativement rapide, construit au cours des deux dernières années, et toutes les données stockées et consultées localement, les 20 millions d’enregistrements doivent être effectués dans environ 10 jours. Je géocode des adresses depuis 15 ans et j'utilise ZP4 depuis presque tout le temps. Avant ils ont offert long-lat ou DPV,
Je géocode 18 millions d'adresses en ce moment, donc je veux partager ma configuration.
Fondamentalement, j’ai utilisé un livre de lecture ansible pour configurer l’instance Amazon EC2 en tant que serveur PostGIS Tiger Geocoder, puis un script pour grouper des adresses de géocodage et les mapper à un bloc de recensement.
Le coût d'Amazon EC2: la configuration minimale requise pour le SSD 180G est d'environ 18 $ / mois. Mon instance t2.large coûte environ 90 $ / mois au total.
Si vous avez une boîte Linux avec un SSD> 180G, vous pouvez aussi l’utiliser gratuitement.
Ma performance moyenne est d'environ 170 ~ 300 ms / adresse de bonne qualité, 400 ~ 600 ms / adresse de mauvaise qualité. Par mauvaise qualité, je veux dire que beaucoup d’entre eux ont une ville, un code postal ou une adresse erronée ou manquante. La géocodage de ce type d'adresse prend beaucoup plus de temps; vos performances dépendent donc de la qualité de l'entrée. L'instance Amazon EC2 que j'ai utilisée peut géocoder environ 4 millions d'adresses formatées vraiment mauvaises en un mois.
Pour plus de détails, consultez mon article de blog sur la configuration du système et les scripts.
AWS propose un certain nombre de serveurs de géocodage. Obtenez votre propre serveur et dump vos données là-bas. https://aws.amazon.com/marketplace/search/results/ref=dtl_navgno_search_box?page=1&searchTerms=geocode
Si votre flux de travail est en Python, geopy est une excellente solution. Vous pouvez écrire votre logique de base de géocodage de manière abstraite, puis choisir l’un des nombreux fournisseurs (ArcGIS, Baidu, Bing, DataBC, GeocodeFarm, GoecoderDotUS, GeoNames, Google, IGN France, LiveAddress, NaviData, Nominatim (OSM), OpenCage, OpenMapQuest, BOSS Yahoo! Find Place, What3Words, Yandex ... ouf). Vous pouvez même les utiliser tous et finalement choisir le point qui a la plus grande confiance en l'exactitude grâce à la validation par plusieurs services de géocodage. Beaucoup de ces services nécessitent une inscription (mais pas tous). Ils peuvent ne pas convenir aussi bien aux États-Unis, mais l’avantage de le faire avec une fonction Python ordonnée est que vous devriez pouvoir le contrôler.
Voici un court exemple:
from geopy.geocoders import Nominatim
geolocator = Nominatim(country_bias='New Zealand', timeout=4)
geocoded = geolocator.geocode('Raglan, Waikato', exactly_one=True)
if geocoded is not None:
# success
lat = geocoded.latitude
lon = geocoded.longitude
https://geopy.readthedocs.org/en/1.10.0/
Vraiment, le seul problème est de s’assurer que vos adresses ne sont pas mal formées. Il faudra probablement beaucoup de temps pour géocoder 20 millions d'emplacements, cependant ... et ce type de charge violera probablement les conditions de service de quelqu'un. J'espère que cela aide quelqu'un.
Si votre demande de géocodage ne dépasse pas 2 500 par jour, vous pouvez utiliser l' API Google Geocoding . vous devriez jeter un coup d'oeil à api, il peut retourner aux résultats en json ou xml.
Limite d'utilisation:
L'utilisation de l'API Google Geocoding est soumise à une limite de 2 500 requêtes de géolocalisation par jour. (L'utilisateur de l'API Google Maps pour les entreprises peut effectuer jusqu'à 100 000 demandes par jour.)
Exemple:
http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA
Exemple de résultat:
{
"name": "520 3rd Street San Francisco CA",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "520 3rd St, San Francisco, Kaliforniya 94107, Amerika Birleşik Devletleri",
"AddressDetails": {
"Accuracy" : 8,
"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "CA",
"SubAdministrativeArea" : {
"Locality" : {
"LocalityName" : "San Francisco",
"PostalCode" : {
"PostalCodeNumber" : "94107"
},
"Thoroughfare" : {
"ThoroughfareName" : "520 3rd St"
}
},
"SubAdministrativeAreaName" : "San Francisco"
}
},
"CountryName" : "USA",
"CountryNameCode" : "US"
}
},
"ExtendedData": {
"LatLonBox": {
"north": 37.7826364,
"south": 37.7799384,
"east": -122.3942267,
"west": -122.3969247
}
},
"Point": {
"coordinates": [ -122.3955757, 37.7812874, 0 ]
}
} ]
}
et vous pouvez consulter un exemple de lien pour le géocodage à partir de Google:
3. Commencer avec Google GeoCoding
j'espère que ça vous aide