[Portugal] Re: Múltiplos Startpoints e múltiplos endpoints - geocode

Jorge Gustavo Rocha jgr di.uminho.pt
Quarta-Feira, 28 de Março de 2012 - 18:00:28 EDT


Olá Luis,

A ideia é usar um serviço de geocoding de terceiros, e consequente, 
usa-se essencialmente a base de dados deles para o geocoding. Fixe.

Ou seja, faz-se uma script que invoque sucessivamente o serviço, e que 
guarde os resultados numa base de dados nossa, por exemplo.

Por exemplo, o serviço de geocoding da SAPO (que é parecido com o da 
Google em termos de API), pode ser invocado para a morada: "Avenida João 
XXI 835 - 4715-035 BRAGA", com um URL do género:

http://services.sapo.pt/Maps/SearchJSON?version=1.0&q=Avenida%20Jo%C3%A3o%20XXI%20835%20-%204715-035%20BRAGA&recordsPerPage=10&pageNumber=1&jsonTag=json614021

A resposta é uma string JSON, de fácil descodificação [1]. (A string 
JSON pode parecer ilegível, mas é de muito fácil descodificação). Na 
string retornada, pode-se ver que foram encontrados 23 resultados.

Ou seja, a ideia é escrever uma script que leia um ficheiro com todas as 
moradas que se quer fazer geocoding e, para cada morada, faz um pedido 
através de um HTTP GET. (Pode-se usar o curl que é muito bom para fazer 
pedidos). É de boa educação por um sleep com um mínimo de 15 seg entre 
cada pedido, para não se stressar o servidor só com as nossas queries, e 
permitir que outros possam continuar a usufruir do serviço sem perturbações.

Os resultados vão sendo guardados, à medida que são recebidos, para 
posterior análise e selecção.

Com o routing, faz-se exactamente a mesma coisa, Fazem-se pedidos com 
HTTP GET, passando a origem e o destino, e o resultado é um JSON com o 
percurso obtido (que se guarda em base de dados).

As scripts podem ser feitas em python, ou mesmo em Javascript ou PHP.

Abraço,

Jorge

[1]
var json614021 = 
{"SearchResponse":{"SearchResult":{"POI":[{"Address":null,"Category":"Ruas","CategoryId":"214","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Street":{"LastUpdate":"2010-02-02","Name":{"Designation":{"cdata":"João 
XXI"},"Prefix":"Avenida"}},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS"}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":null,"HouseNumber":null,"LastModified":"Fri Feb 18 
17:20:00 WET 
2011","Latitude":"41.545887","Locality":null,"LocalityId":null,"Longitude":"-8.420012","MatchLevel":"Street","MatchLevelId":"6","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Avenida 
João XXI","Parish":"Braga (São José de São 
Lázaro)","ParishId":"030342","Phone":null,"POIId":"574d5463-e891-48dc-90fa-54f18fa37bf9","POISourceId":"AC:129430","PublicationDate":"Thu 
Feb 25 00:00:00 WET 2010","RegistrationDate":"Thu Feb 25 00:00:00 WET 
2010","Revision":"0","score":"1.0","Source":"InfoPortugal","SourceId":"2","Street":"Avenida 
João 
XXI","StreetId":null,"Tags":null,"TrustLevel":null,"TrustLevelId":"100","URL":null,"ZipCode":"4715035"},{"Address":null,"Category":"Ruas","CategoryId":"214","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Street":{"LastUpdate":"2010-02-02","Name":{"Designation":{"cdata":"João 
XXI"},"Prefix":"Avenida"}},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS"}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":null,"HouseNumber":null,"LastModified":"Mon Nov 15 
13:17:00 WET 
2010","Latitude":"41.41822","Locality":null,"LocalityId":null,"Longitude":"-8.447853","MatchLevel":"Street","MatchLevelId":"6","MimeType":null,"Municipality":"Vila 
Nova de Famalicão","MunicipalityId":"0312","Name":"Avenida João 
XXI","Parish":"Vermoim","ParishId":"031247","Phone":null,"POIId":"0e16a088-8148-42e7-a7db-5563f3e711b3","POISourceId":"AC:129431","PublicationDate":"Thu 
Feb 25 00:00:00 WET 2010","RegistrationDate":"Thu Feb 25 00:00:00 WET 
2010","Revision":"0","score":"0.22601013","Source":"InfoPortugal","SourceId":"2","Street":"Avenida 
João 
XXI","StreetId":null,"Tags":null,"TrustLevel":null,"TrustLevelId":"100","URL":null,"ZipCode":"4770"},{"Address":"Avenida 
João XXI 
849","Category":"Hotéis","CategoryId":"92","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":["Hotel 
João XXI","António Gama & Irmão Lda","Oui-Empreendimentos Turísticos 
Lda"]},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"AlternativePhones":{"Phone":["253616630","253616631"]},"CustomerInfo":{"City":"Braga","Heading":"Hotéis","HeadingId":"DBL","ItemCode":null,"ListingId":"PT_71121436_9999_17__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"71121436"},"GeoLevel":"01","GeoMatch":"90","OrderValue":"0","SubCategories":{"SubCategory":"Hotéis"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":null,"HouseNumber":null,"LastModified":"Thu Dec 16 
15:34:00 WET 
2010","Latitude":"41.546093","Locality":"Braga","LocalityId":null,"Longitude":"-8.419384","MatchLevel":"GPS","MatchLevelId":"10","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Oui-Empreendimentos 
Turísticos Lda","Parish":"Braga (São José de São 
Lázaro)","ParishId":"030342","Phone":"253616631","POIId":"02011bd6-c320-4dd5-985c-e3ee02c1054c","POISourceId":"PT_71121436_9999_17__1","PublicationDate":"Tue 
Jun 22 00:00:00 WEST 2010","RegistrationDate":"Thu Aug 12 12:24:00 WEST 
2010","Revision":"0","score":"1.0","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":null,"ZipCode":"4715035"},{"Address":"Avenida 
João XXI 
661\/701-r\/c","Category":"Restaurantes","CategoryId":"158","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":["Restaurante 
Bracara Augusta","José Pereira Lopes & Lopes 
Lda"]},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"CustomerInfo":{"City":"Braga","Heading":"Restaurantes","HeadingId":"FCN","ItemCode":null,"ListingId":"PT_60378090_9999_6__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"60378090"},"GeoLevel":"01","GeoMatch":"91","OrderValue":"0","SubCategories":{"SubCategory":"Restaurantes"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":null,"HouseNumber":null,"LastModified":"Tue Oct 26 
01:11:00 WEST 
2010","Latitude":"41.548573","Locality":"Braga","LocalityId":null,"Longitude":"-8.416804","MatchLevel":"GPS","MatchLevelId":"10","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Restaurante 
Bracara Augusta","Parish":"Braga (São José de São 
Lázaro)","ParishId":"030342","Phone":"253616265","POIId":"07ef6e6e-8744-40a3-99b9-964b34af679b","POISourceId":"PT_60378090_9999_6__1","PublicationDate":"Thu 
Jan 22 00:00:00 WET 2009","RegistrationDate":"Thu Aug 12 13:07:00 WEST 
2010","Revision":"0","score":"0.99910545","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":null,"ZipCode":"4715035"},{"Address":"Avenida 
João XXI 883,1º-D","Category":"Atendimento às 
empresas","CategoryId":"302","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":["Agência 
de Serviços José Santos","Santos & Mendes 
Lda"]},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"AlternativePhones":{"Phone":["253619903","253276636"]},"CustomerInfo":{"City":"Braga","Heading":"Contabilidade 
- Escritórios e 
Serviços","HeadingId":"BNR","ItemCode":null,"ListingId":"PT_63375015_9999_10__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"63375015"},"GeoLevel":"01","GeoMatch":"90","OrderValue":"0","SubCategories":{"SubCategory":"Contabilidade 
- Escritórios e 
Serviços"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":"253619903","HouseNumber":null,"LastModified":"Thu Dec 
16 13:47:00 WET 
2010","Latitude":"41.550655","Locality":"Braga","LocalityId":null,"Longitude":"-8.411369","MatchLevel":"GPS","MatchLevelId":"10","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Santos 
& Mendes Lda","Parish":"Braga (São 
Vítor)","ParishId":"030351","Phone":"253213495","POIId":"1bc3605c-6d40-40a6-b4fd-044773581a4c","POISourceId":"PT_63375015_9999_10__1","PublicationDate":"Sun 
Feb 10 00:00:00 WET 2008","RegistrationDate":"Thu Aug 12 13:20:00 WEST 
2010","Revision":"0","score":"0.99898005","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":null,"ZipCode":"4715035"},{"Address":"Avenida 
João XXI 695,1º-s 12","Category":"Atendimento às 
empresas","CategoryId":"302","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":"Maria 
do Céu Correia-Consultoria e Contabilidade 
Lda"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"CustomerInfo":{"City":"Braga","Heading":"Contabilidade 
- Escritórios e 
Serviços","HeadingId":"BNR","ItemCode":null,"ListingId":"PT_107651912_9999_2__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"107651912"},"GeoLevel":"01","GeoMatch":"90","OrderValue":"0","SubCategories":{"SubCategory":"Contabilidade 
- Escritórios e 
Serviços"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":null,"HouseNumber":null,"LastModified":"Thu Dec 16 
20:31:00 WET 
2010","Latitude":"41.54701","Locality":"Braga","LocalityId":null,"Longitude":"-8.417505","MatchLevel":"GPS","MatchLevelId":"10","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Maria 
do Céu Correia-Consultoria e Contabilidade Lda","Parish":"Braga (São 
José de São 
Lázaro)","ParishId":"030342","Phone":"253272495","POIId":"1b17df8f-1f5d-4df0-a07b-2e8d3fe8ca2d","POISourceId":"PT_107651912_9999_2__1","PublicationDate":"Wed 
Jun 30 00:00:00 WEST 2010","RegistrationDate":"Thu Aug 12 14:11:00 WEST 
2010","Revision":"0","score":"0.9989463","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":null,"ZipCode":"4715035"},{"Address":"Avenida 
João XXI 487,1º-E","Category":"Atendimento às 
empresas","CategoryId":"302","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":"Marques 
Costa & C 
Lda"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"AlternativePhones":{"Phone":["253221089","253619645","253276947","253276947","253619645"]},"CustomerInfo":{"City":"Braga","Heading":"Contabilidade 
- Escritórios e 
Serviços","HeadingId":"BNR","ItemCode":null,"ListingId":"PT_62514409_9999_7__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"62514409"},"GeoLevel":"01","GeoMatch":"90","OrderValue":"0","SubCategories":{"SubCategory":"Contabilidade 
- Escritórios e 
Serviços"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":"253619645","HouseNumber":null,"LastModified":"Thu Dec 
16 13:47:00 WET 
2010","Latitude":"41.548588","Locality":"Braga","LocalityId":null,"Longitude":"-8.416438","MatchLevel":"GPS","MatchLevelId":"10","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Marques 
Costa & C Lda","Parish":"Braga (São José de São 
Lázaro)","ParishId":"030342","Phone":"253276947","POIId":"ac5ad99e-ceba-4f8d-a012-30144bd69e65","POISourceId":"PT_62514409_9999_7__1","PublicationDate":"Sun 
Feb 10 00:00:00 WET 2008","RegistrationDate":"Thu Aug 12 12:50:00 WEST 
2010","Revision":"0","score":"0.9989463","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":null,"ZipCode":"4715035"},{"Address":"Avenida 
João XXI 733","Category":"Outros serviços de 
saúde","CategoryId":"274","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":["José 
Arantes Amorim Unipessoal Lda","Só 
Saúde"]},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"AlternativePhones":{"Phone":["253617175","253617174","253617176","253617176","253617174"]},"CustomerInfo":{"City":"Braga","Heading":"Medicina 
- Artigos e 
Equipamentos","HeadingId":"DTR","ItemCode":null,"ListingId":"PT_30434223_9999_5__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"30434223"},"GeoLevel":"03","GeoMatch":"100","OrderValue":"0","SubCategories":{"SubCategory":"Medicina 
- Artigos e 
Equipamentos"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":"so.saude  sapo.pt","EMail":"so.saude  sapo.pt","ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":"253617174","HouseNumber":null,"LastModified":"Wed Dec 
22 17:54:00 WET 
2010","Latitude":"41.54904","Locality":"Braga","LocalityId":null,"Longitude":"-8.415257","MatchLevel":"CP7","MatchLevelId":"7","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Só 
Saúde","Parish":"Braga (São 
Vítor)","ParishId":"030351","Phone":"253617176","POIId":"78ab798d-3f3f-45cb-9767-316380b28ddf","POISourceId":"PT_30434223_9999_5__1","PublicationDate":"Wed 
Dec 15 00:00:00 WET 2010","RegistrationDate":"Fri Dec 17 16:12:00 WET 
2010","Revision":"0","score":"0.99898005","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":"http:\/\/www.sosaude.pt","ZipCode":"4715035"},{"Address":"Avenida 
João XXI 803","Category":"Outros serviços de 
saúde","CategoryId":"274","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":"Nova 
Mobilidade-Artigos e Apoios p\/ Mobilidade 
SA"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"CustomerInfo":{"City":"Braga","Heading":"Ortopedia 
- Artigos e 
Aparelhos","HeadingId":"HME","ItemCode":null,"ListingId":"PT_106747619_9999_2__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"106747619"},"GeoLevel":"01","GeoMatch":"90","OrderValue":"0","SubCategories":{"SubCategory":"Ortopedia 
- Artigos e 
Aparelhos"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":null,"HouseNumber":null,"LastModified":"Thu Dec 16 
20:27:00 WET 
2010","Latitude":"41.546375","Locality":"Braga","LocalityId":null,"Longitude":"-8.418545","MatchLevel":"GPS","MatchLevelId":"10","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Nova 
Mobilidade-Artigos e Apoios p\/ Mobilidade SA","Parish":"Braga (São José 
de São 
Lázaro)","ParishId":"030342","Phone":"253262018","POIId":"5b418ec6-919c-473a-ad43-1d9dabac652a","POISourceId":"PT_106747619_9999_2__1","PublicationDate":"Tue 
May 18 00:00:00 WEST 2010","RegistrationDate":"Thu Aug 12 14:09:00 WEST 
2010","Revision":"0","score":"0.9989463","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":"http:\/\/www.novamobilidade.pt","ZipCode":"4715035"},{"Address":"Avenida 
João XXI 835","Category":"Outros serviços de 
saúde","CategoryId":"274","Country":"Portugal","CountryId":"PT","Description":null,"DetailXml":{"Details":{"Aliases":{"Alias":["José 
I Castro Franco","José Isidoro Castro Franco","Óptica 
Franco"]},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS","YellowPages":{"AlternativePhones":{"Phone":["253270088","253268737"]},"CustomerInfo":{"City":"Braga","Heading":"Oculistas","HeadingId":"EFD","ItemCode":null,"ListingId":"PT_60343828_9999_9__1","ListingType":"FREE","Parish":null,"PostalCode":"4715-035 
BRAGA","ProductId":"G","SubscriberId":"60343828"},"GeoLevel":"01","GeoMatch":"90","OrderValue":"0","SubCategories":{"SubCategory":"Oculistas"},"xmlns":"http:\/\/services.sapo.pt\/Metadata\/GIS\/YellowPages"}}},"Distance":"0","District":"Braga","DistrictId":"03","Email":null,"EMail":null,"ExpirationDate":"Sat 
Aug 16 23:00:00 WET 
292278994","Fax":null,"HouseNumber":null,"LastModified":"Thu Dec 16 
13:39:00 WET 
2010","Latitude":"41.54625","Locality":"Braga","LocalityId":null,"Longitude":"-8.419087","MatchLevel":"GPS","MatchLevelId":"10","MimeType":null,"Municipality":"Braga","MunicipalityId":"0303","Name":"Óptica 
Franco","Parish":"Braga (São José de São 
Lázaro)","ParishId":"030342","Phone":"253218900","POIId":"3760847e-a029-425e-87b4-e39c49211f00","POISourceId":"PT_60343828_9999_9__1","PublicationDate":"Sun 
Feb 10 00:00:00 WET 2008","RegistrationDate":"Thu Aug 12 12:50:00 WEST 
2010","Revision":"0","score":"0.9989463","Source":"Páginas 
Amarelas","SourceId":"28","Street":"Avenida João 
XXI","StreetId":null,"Tags":null,"TrustLevel":"Entity","TrustLevelId":"100","URL":null,"ZipCode":"4715035"}],"randomToken":"df47cd0a-34d2-4559-bc52-30a75f960c3d","totalResults":"23"}}};


Em 28-03-2012 17:15, leitao escreveu:
> Boas,
>
> peço desde já desculpa pela intromissão no tema.
> Para se fazer esta tarefa de geocoding é necessário uma ligação a uma base
> de dados, sejam de moradas, coordenadas.. etc.
> No código html da api do sapo que o Jorge referiu, onde é que está essa
> ligação?
>
> Cumprimentos,
>
> Luis Leitão
>
> --
> View this message in context: http://osgeo-org.1560.n6.nabble.com/Multiplos-Startpoints-e-multiplos-endpoints-geocode-tp4624137p4664924.html
> Sent from the OSGeo Portuguese Local Chapter mailing list archive at Nabble.com.
>
>
>
> _______________________________________________
> Portugal mailing list
> Portugal  lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal


-- 
Jorge Gustavo Rocha
Departamento de Informática
Universidade do Minho
4710-057 Braga
Tel: +351 253604480
Fax: +351 253604471
Móvel: +351 910333888
skype: nabocudnosor


Mais informações acerca da lista Portugal