Existem bancos de dados gratuitos ou com preços razoáveis para os EUA que possam ser pesquisados e retornar informações de latitude e longitude?
Existem bancos de dados gratuitos ou com preços razoáveis para os EUA que possam ser pesquisados e retornar informações de latitude e longitude?
Respostas:
Para tantos registros, nem considere um serviço da web. Eles irão estrangulá-lo ou cortá-lo antes que você possa concluir sua tarefa.
Portanto, sua opção passa a ser executada localmente e, para isso, você tem várias opções comerciais ou gratuitas.
As opções gratuitas usarão o conjunto de dados do censo TIGER que você precisará carregar em um banco de dados espacial. Você pode encontrar bibliotecas que codificam geograficamente no TIGER for PostGIS ou mesmo no sqlite . Você pode até usar o ArcGIS para geocodificar contra o TIGER. Obviamente, o ArcGIS não é gratuito, o que me leva às próximas opções comerciais. Se você possui uma licença do ArcGIS, é possível ter o StreetMap DVD com um conjunto de dados TeleAtlas ( quero dizer Tom Tom ) ou Navteq. Isso depende se você tiver o StreetMap Premium incluído. Qualquer um desses dois conjuntos de dados provavelmente fornecerá resultados mais consistentes que o TIGER.
Faça um favor a si mesmo e faça várias cópias do banco de dados de ruas assim que os dados forem carregados e execute o processo de geocodificação em várias máquinas com um subconjunto dos dados de entrada. Não tente executá-lo em apenas uma máquina ou você estará aguardando dias para que ele termine, sem mencionar que, provavelmente, qualquer processo que você execute provavelmente vazará memória e travará várias vezes antes de terminar. Isso significa que você deseja ter diferentes pontos de verificação para o seu processo.
Eu trabalho na SmartyStreets (uma empresa de verificação de endereço). Nosso serviço é gratuito para todos (até o nível básico). As startups também podem solicitar o uso gratuito de nosso serviço pelo primeiro ano. Portanto, se você se encaixar nessa classificação, não haverá cobrança pelo serviço ilimitado por um ano.
A Ragi recomenda um serviço da Web; no entanto, nossa API pode facilmente limpar, padronizar e geocodificar 20 milhões de endereços para você em cerca de 5 horas (aproximadamente 1000 por segundo). Parte desse tempo dependerá da velocidade da sua máquina (quantos núcleos você possui) e da sua conexão de rede (não tente através de 3G, mas uma conexão de banda larga padrão funcionará perfeitamente).
Só queria salientar que certamente é possível com um serviço da web.
Atualização: a partir de 1 de agosto de 2017, eu testei remotamente nosso serviço da Web e obtive 70.000 pesquisas por segundo usando apenas um único MacBook Pro 2015 em uma rede sem fio. Sim, é muito rápido. Isso significa que uma lista pequena, como 20 milhões de endereços, levaria apenas cerca de 5 minutos.
Eu usei este passo a passo descrevendo como criar um geocoder postgis usando os dados do TigerLine 2010. Estou executando agora - não é rápido, pois levará três semanas para geocodificar 2 milhões de endereços.
No entanto, é gratuito, sem restrições e levou alguém com habilidades mínimas de codificação e postgres a menos de 2 dias para configurar e carregar os dados de um (grande) estado para começar a geocodificação. Também não fiz absolutamente nenhum ajuste no postgres para o sistema e ele está sendo executado em montagens NFS, então suspeito que haja uma ou duas ordens de magnitude em ganhos de desempenho que eu poderia obter se necessário.
Em vez de usar serviços da Web, carreguei todos os meus endereços no banco de dados postgres e, em seguida, estou executando um script perl rápido e sujo para geocodificá-los todos, um de cada vez:
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
(quebras de linha apenas para facilitar a leitura)
Portanto, isso gera uma instrução de atualização "geocodifica o endereço com esse valor de ID e usa a melhor correspondência" e o envia ao psql para fazê-lo. Ele só tenta geocodificar endereços sem classificação - ou seja, aqueles que ainda não foram geocodificados. Portanto, é reinicializável e cada um é feito de forma independente.
Suponho que você queira geocodificar, mas não pague nada por isso? Há vários serviços em que você pode codificar geograficamente 20 milhões de registros, mas isso custará. Esri, Pitney Bowes e outros oferecem esses serviços por assinatura ou com um custo por x geocódigos. 20 milhões não são triviais, mas suponho que exista um argumento comercial para isso.
A localização dos seus dados é muito importante porque a qualidade dos serviços da web muda (precisão, escala, etc.). Eu codifico meu endereço da API do Google, API do Facebook e ex-simplegeo com meu banco de dados geográficos.
http://blog.programmableweb.com/2012/06/21/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/
Este post provavelmente é tarde demais para ajudar o pôster original. No entanto, para outros que buscam georreferenciar grandes quantidades de dados de graça, você pode conferir meu software chamado "Easy Georeferencer", que é criado de forma independente, fácil de usar e poderoso (veja a captura de tela na parte inferior da publicação).
O programa é simples e direto de usar e é executado diretamente de um arquivo exe que não requer instalação. Você pode optar por codificar geograficamente entre a fonte de dados GNS ou GeoNames e fazer o que nenhum outro geocoder até agora pode fazer, codificar geograficamente as províncias com base no banco de dados de unidades administrativas da GADM, bem como codificar geograficamente as fronteiras dos países históricos do conjunto de dados CShapes. A única ressalva é que ele não codifica geograficamente os dados de endereço. Todas as saídas são fornecidas como shapefiles, prontas para visualização / análise imediata em um SIG.
No que diz respeito à eficiência e ao tratamento de grandes dados, o programa foi testado para geocodificar 100.000 registros em apenas 3 horas. Para conjuntos de dados maiores, o aumento esperado no tempo de processamento deve cair de forma curvilínea, porque grande parte do tempo de processamento vai apenas para a fase inicial quando os conjuntos de dados de referência do país são carregados, mas é retomada posteriormente. Além disso, não é necessário se preocupar com gargalos na Internet ou problemas de conectividade ao geocodificar grandes conjuntos de dados, porque o software, os conjuntos de dados de referência e o processamento são todos baseados no computador local. As taxas de correspondência podem chegar a 80-90 por cento, porque se baseiam na correspondência de nomes difusos para diferenças de ortografia.
Mais detalhes, incluindo um artigo introdutório e um guia para iniciantes, estão incluídos no pacote de download. Não há necessidade de hesitar em tentar, o programa é apenas um arquivo simples que você pode colocar e executar na sua área de trabalho sem qualquer compromisso ou confusão do seu computador.
O software pode ser baixado em: http://geocodeanything.wordpress.com/
Espero que ajude.
Como você geocodificará endereços nos EUA, acho que a ferramenta Endereço para coordenadas do Data Science Toolkit deve funcionar bem para você.
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.
Você pode fazer o download da máquina virtual e executá-la no seu próprio hardware. Dessa forma, você não precisa se preocupar com os limites da API e também o controla. Ah, e eu disse que é grátis? ;-)
Não vi nenhuma referência ao nível de precisão de que você precisa, mas estou supondo que você queira um telhado longo ou próximo a ele. A qualidade do endereço de entrada também pode ser um fator. Uma lista de endereços bem limpa codificará melhor e mais rapidamente do que uma lista de endereços incompletos ou incorretos. Além disso, uma taxa de acerto de 90% é aceitável ou você precisa de todos os 20 milhões de endereços codificados? Não tenho uma solução gratuita, mas existe uma relativamente barata que eu conheço e uso. ZP4 da Semaphore Corp, http://www.semaphorecorp.com/oferece um lavador / geocoder de endereço e complementos que processam os endereços e retornam um endereço limpo, um sinalizador que indica se o endereço pode ser entregue pelo USPS e a latência longa para o ZIP + 4. A precisão ZIP + 4 geralmente é próxima da precisão do telhado nas áreas construídas (lado correto da rua e no quarteirão correto) e não nas áreas rurais. O custo para uma licença de 30 dias é de US $ 120. Após esse período, o depurador de endereços continuará funcionando, mas a Validação do Ponto de Entrega (DPV) e os retornos geográficos não funcionarão. Com um computador relativamente rápido, construído nos últimos dois anos, e todos os dados armazenados e acessados localmente, os 20 milhões de registros devem ser feitos em cerca de 10 dias. Venho geocodificando endereços nos últimos 15 anos e tenho usado o ZP4 na maior parte desse tempo. Antes de oferecerem latência longa ou DPV,
Estou geocodificando 18 milhões de endereços agora, então quero compartilhar minha configuração.
Basicamente, usei um manual ansible para configurar a instância do Amazon EC2 como um servidor PostGIS Tiger Geocoder, depois usei o script para lotes de endereços de geocódigos, mapeei-os para o bloco de censo.
O custo do Amazon EC2: requisito mínimo de 180G SSD custa cerca de US $ 18 / mês. Minha instância t2.large custa cerca de US $ 90 / mês no total.
Se você possui uma caixa Linux com SSD> 180G, também pode usá-la basicamente de graça.
Meu desempenho médio é de cerca de 170 ~ 300 ms / endereço de boa qualidade, 400 ~ 600 ms / endereço de qualidade ruim. Por má qualidade, quero dizer que muitos deles têm cidade, código postal ou mesmo endereço errado ou faltam. Esse tipo de endereço leva muito mais tempo para o geocódigo, portanto, seu desempenho depende da qualidade da entrada. A instância do Amazon EC2 que usei pode codificar geograficamente cerca de 4 milhões de endereços formatados realmente ruins em um mês.
Para obter mais detalhes, consulte minha postagem no blog sobre a configuração e os scripts do sistema.
A AWS tem vários servidores de geocodificação disponíveis agora. Obtenha seu próprio servidor e despeje seus dados lá. https://aws.amazon.com/marketplace/search/results/ref=dtl_navgno_search_box?page=1&searchTerms=geocode
Se o seu fluxo de trabalho estiver em Python, a geopy é uma ótima solução. Você pode escrever sua lógica básica de geocodificação de forma abstrata e escolher um dos muitos provedores (ArcGIS, Baidu, Bing, DataBC, GeocodeFarm, GoecoderDotUS, GeoNames, Google, IGN France, LiveAddress, NaviData, Nominatim (OSM), OpenCage, OpenMapQuest, Localizador do Yahoo BOSS Place, What3Words, Yandex ... ufa). Você pode até usar todos eles e, finalmente, escolher o ponto que tem a maior confiança de estar correto através da validação por vários serviços de geocodificação. Muitos desses serviços exigem registro (mas não todos). Eles podem não ser igualmente adequados para uso nos EUA, mas o benefício de fazê-lo com uma função Python pura é que você deve poder controlar isso.
Aqui está um pequeno exemplo:
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/
Realmente, a única parte difícil é garantir que seus endereços não sejam mal formados. Provavelmente ainda levará um tempo considerável para geocodificar 20 milhões de locais, no entanto ... e esse tipo de carga provavelmente violará os termos de serviço de alguém. Espero que isso ajude alguém.
se sua solicitação de geocódigo não exceder 2.500 por dia, você poderá usar a API de geocodificação do Google . você deve dar uma olhada na API, ela pode retornar aos resultados como json ou xml.
Limite de uso:
O uso da API de geocodificação do Google está sujeito a um limite de consulta de 2.500 solicitações de localização geográfica por dia. (O usuário da API do Google Maps para Empresas pode realizar até 100.000 solicitações por dia.)
Exemplo:
http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA
Resultado de exemplo:
{
"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 ]
}
} ]
}
e você pode conferir um exemplo de link para geocodificação no google:
3. Começando com o Google GeoCoding
espero que ajude você