J'ai une base de données qui a 300 000 adresses, qui doivent être affichées sur la carte. Je sais que si je géocode toutes les adresses, cela me coûtera trop cher. Je me demandais donc s'il était possible de géocoder l'adresse à la volée / en temps réel, lorsqu'un utilisateur sélectionnerait une adresse (une adresse de propriété), il rechercherait dans la base de données, puis géocoderait l'adresse, puis la cartographierait avec d'autres attributs.
Ce serait vraiment bien si vous pouviez partager un code, un concept ou quoi que ce soit. D'ailleurs mon backend est sur mysql supporté par Joomla.
google-maps
geocoding
php
mysql
google-maps-api
user1089553
la source
la source
Réponses:
Mehul, je travaillais dans l'industrie de la vérification d'adresse avec une société appelée SmartyStreets. Il existe de nombreux services de géocodage, mais seuls quelques-uns prendront en charge le traitement par lots avec le volume dont vous avez besoin. (Google et d'autres n'autorisent pas l'utilisation en masse de leur API ni le stockage / la mise en cache des résultats.)
Si vous allez dans votre base de données MySQL et effectuez une exportation de votre table qui contient les adresses, enregistrez-la comme fichier CSV par exemple. Vous pouvez ensuite le traiter à l'aide de l' outil Web SmartyList ou de l'outil de ligne de commande . Comme je l'ai dit, il existe plusieurs services, mais vous voudrez quelque chose, je suppose, qui vérifie également l'existence des adresses (d'où la raison du géocodage) - si l'adresse est incorrecte ou incomplète, les résultats du géocodage le sont également . Seuls quelques services le font.
LiveAddress est un service certifié CASS par l'USPS. Il y en a quelques-uns, alors faites vos recherches, mais vous voulez quelque chose "à la volée" / rapide et peu coûteux, je recommande donc LiveAddress. Il vérifiera non seulement l'adresse mais fera ensuite ce que vous souhaitez, à savoir fournir les informations lat / lon et également la précision des résultats de géocodage. Tout est basé sur le Web et traitera des dizaines de millions d'enregistrements en un rien de temps (voir cette question comme référence ).
Si vous avez encore besoin de géocoder des adresses pendant que les utilisateurs interagissent, LiveAddress a également une version d' API qui peut se connecter à peu près n'importe quoi et il prend également en charge le traitement par lots à la volée, mais est payé comme un abonnement, pas une seule fois Paiement.
la source
Si vous aimez Python, vous pouvez utiliser l' API GeoPy , combinée aux liaisons GDAL Python ou Fiona , et créer un script très basique comme celui-ci pour convertir les adresses en un fichier de formes ponctuelles.
Cela géolocalisera un fichier nommé 'addresses_to_geocode', créant un fichier de formes de sortie nommé 'my_output.shp' dans le dossier my_output:
Le fichier est censé avoir juste une ligne pour une seule adresse, comme par exemple:
Ici, j'utilise l'API Google, mais avec GeoPy est très basique pour passer à différentes API, comme Yahoo !, GeoNames ou MapPoint .
la source
Une autre option pour résoudre votre problème serait d'importer votre jeu de données dans des tables de fusion et de définir le champ d'adresse comme emplacement. Ensuite, il géocodera automatiquement les points. Une fois cela terminé, vous pouvez exporter les données au format KML.
Ou..alternativement, vous pouvez écrire un script php pour utiliser le géocodeur yahoo qui a une limite de 50 000 enregistrements, donc tôt ou tard vous aurez tous vos points géocodés dans votre base de données.
J'espère que cela a aidé!
la source
de loin le géocodeur le meilleur et le plus simple que j'ai utilisé https://pypi.python.org/pypi/geocoder/1.8.0 bing maps, google maps, OSM etc.
la source
Ce n'est peut-être pas la meilleure réponse à votre question, mais vous pouvez essayer BatchGeo. La version gratuite vous ferait beaucoup souffrir, mais c'était quand même assez bien pour mon travail. Cependant, nous avons acheté la version pro.
L'astuce pour obtenir les coordonnées du fichier KML consiste à l'importer dans ArcGIS ultérieurement.
la source
J'ai utilisé avec succès geopy qui utilise le service Web de géocodage de Google. Il fonctionne parfaitement jusqu'à 2 000 points par 24 heures.
la source
Matej, c'est parce que l'API Google permet de tirer jusqu'à 2,5k par jour.
À propos de la solution Geo, le traitement par lots n'est pas encore trouvé, c'est parce que d'après mon examen du code geo python, il semble qu'il ouvre une connexion chaque fois qu'il demande un nouveau cordinate, 300k restera probablement bloqué pour toujours (probablement avec l'erreur 400).
Jouer avec des Poligons devrait faire l'affaire, mais cela dépend de votre zone de jeu, que ce soit 1 pays ou n pays.
Pour 1 pays, les polygones devraient fonctionner plutôt bien.
Pour n pays, la solution ne fonctionnera pas car la collecte prendra plus de temps chaque fois que vous ajoutez un autre pays. La meilleure approche pour le faire est une charge paresseuse.
=> commencez avec l'idée du polygone, tout dans un autre pays, créez une grande table de base de données pour contenir les données, vous finirez par contenir les données dont vous avez besoin, je suppose.
la source
Si vous voulez le faire avec PHP - MySQL, voici une solution qui a fonctionné pour moi:
la source
Essayez cette API de géocodage . C'est gratuit pour une petite utilisation mais si vous en voulez plus, ils vous font payer. C'est bon marché cependant et vous pouvez traiter cela très facilement, j'en traite des millions par mois.
la source
Vous pouvez enregistrer vos données dans un fichier texte (un enregistrement par ligne) puis les géocoder par lots à l'aide de ce service: http://geocode.xyz/batch (fonctionne pour la plupart des pays européens)
ou, vous pouvez écrire votre propre code pour accéder à l'API REST / JSON: http://geocode.xyz/api (c'est gratuit pour des recherches illimitées)
la source
Utilisez les outils de mappage (Pointage de carte | Outil de géocodage par lots ( http://www.mappointing.com/ )) Dans cet outil, vous pouvez traiter les données à l'aide de la clé API gratuite de Google Map. Et cet outil fournit également un outil de calcul de distance et de recherche de lieu.
la source