Mapas em Python

1,015 views
Skip to first unread message

Fernando Cruz

unread,
Dec 7, 2016, 5:44:23 AM12/7/16
to Python Brasil
Boa noite pessoal,

Estou tentando plotar o mapa específico do estado de Sergipe, mas especificamente mostrar algumas informações de cada cidade do estado (cores). Já tentei pela biblioteca basemap com o shapefile mas sempre da a mensagem de erro: "ValueError: shapefile must have lat/lon vertices - it looks like this one has vertices
in map projection coordinates. You can convert the shapefile to geographic
coordinates usi
ng the shpproj utility from the shapelib tools
(http://shapelib.maptools.org/shapelib-tools.html)"

Como poderia fazer isso? Desde já agradeço.

att,

Marcelo Valle (BLOOMBERG/ LONDON)

unread,
Dec 7, 2016, 5:52:45 AM12/7/16
to python...@googlegroups.com
Fernando, 

Se voce enviar seu codigo e o stack trace do erro, ficara mais facil tentar te ajudar.

Marcelo
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



<< ideas don't deserve respect >>

Rafael Henrique da Silva Correia

unread,
Dec 8, 2016, 5:49:44 AM12/8/16
to Python Brasil
Olá Fernando!

Não sei se ajuda, mas o Daniel Lins apresentou uma palestra mês passado no Grupy-SP com muita informação sobre Mapas e Geo em geral com Python. Se te interessar da uma olhada aqui:


Talvez te ajude :)

Att.

Em 7 de dezembro de 2016 08:52, Marcelo Valle (BLOOMBERG/ LONDON) <mvalle...@bloomberg.net> escreveu:
Fernando, 

Se voce enviar seu codigo e o stack trace do erro, ficara mais facil tentar te ajudar.

Marcelo

Subject: Re:[python-brasil] Mapas em Python
Boa noite pessoal,

Estou tentando plotar o mapa específico do estado de Sergipe, mas especificamente mostrar algumas informações de cada cidade do estado (cores). Já tentei pela biblioteca basemap com o shapefile mas sempre da a mensagem de erro: "ValueError: shapefile must have lat/lon vertices - it looks like this one has vertices
in map projection coordinates. You can convert the shapefile to geographic
coordinates usi
ng the shpproj utility from the shapelib tools
(http://shapelib.maptools.org/shapelib-tools.html)"

Como poderia fazer isso? Desde já agradeço.

att,
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.


<< ideas don't deserve respect >>

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--

George Silva

unread,
Dec 8, 2016, 5:54:05 AM12/8/16
to Python Brasil
Fernando, existe uma gama muito ampla de ferramentas para se trabalhar com mapas e informação geográfica de forma geral em Python.

O erro que ele está reclamando é que você forneceu para ele os vértices com uma projeção cartográfica, e o software espera que ele esteja sem projeção cartográfica.

Para simplesmente resolver seu erro, você vai precisar converter ele da projeção atual para uma outra. você pode utilizar softwares de GIS para isso, como o QGIS (open-source).

Agora, sugiro que você, se quiser aprofundar, dê uma olhada nas seguintes libs:

* Fiona (leitura/escrita de dados GEO);
* shapely (manipulação de dados GEO);

Existem outras ainda, mas essas duas são muito boas e um bom ponto de partida.

Abraços
George R. C. Silva
Sigma Geosistemas LTDA
----------------------------

Fernando Cruz

unread,
Dec 15, 2016, 5:44:53 PM12/15/16
to Python Brasil
Desculpa a demora pessoal. Obrigado pelas dicas, mas mesmo assim não conseguir. Segue o código que estou tentando fazer:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

map = Basemap(llcrnrlon=-0.5,llcrnrlat=39.8,urcrnrlon=4.,urcrnrlat=43.,
             resolution='i', projection='tmerc', lat_0 = -10.953430
, lon_0 = -37.099723
)

map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='#ddaa66',lake_color='aqua')
map.drawcoastlines()

map.readshapefile('Municipio', name='sergipe',default_encoding='latin1')

plt.show()

O erro que está dando é "ValueError Traceback (most recent call last)
<ipython-input-1-d79c34e9478d> in <module>()
     11 map.drawcoastlines()
     12 
---> 13 map.readshapefile('Municipio', name='sergipe',default_encoding='latin1')
     14 
     15 plt.show()

C:\Program Files\Anaconda3\lib\site-packages\mpl_toolkits\basemap\__init__.py in readshapefile(self, shapefile, name, drawbounds, zorder, linewidth, color, antialiased, ax, default_encoding)
   2185                     lons, lats = list(zip(*verts[indx1:indx2]))
   2186                     if max(lons) > 721. or min(lons) < -721. or max(lats) > 90.01 or min(lats) < -90.01:
-> 2187                         raise ValueError(msg)
   2188                     # if latitude is slightly greater than 90, truncate to 90
   2189                     lats = [max(min(lat, 90.0), -90.0) for lat in lats]

ValueError: shapefile must have lat/lon vertices  - it looks like this one has vertices
in map projection coordinates. You can convert the shapefile to geographic
coordinates using the shpproj utility from the shapelib tools
(http://shapelib.maptools.org/shapelib-tools.html)"

Agradeço desde já atenção.

Marcello Benigno

unread,
Dec 16, 2016, 3:23:35 PM12/16/16
to python...@googlegroups.com
Olá Fernando,

No seu projeto, realmente existe a necessidade de se trabalhar com o Basemap?

Existem bibliotecas mais simples e funcionais, folium é uma delas.

Eu criei um repositório com um exemplo da sua utilização, veja se te ajuda: https://github.com/marcellobenigno/webmapping

Um abraço,

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Marcello Benigno B. de Barros Filho
Prof. do Curso Superior de Tecnologia em Geoprocessamento - IFPB

pablo.mdi

unread,
Dec 18, 2016, 3:27:03 PM12/18/16
to python...@googlegroups.com

Ma parece que o problema está no shapefile, e não na biblioteca. Se reparar, ambas mensagens de erro dizem a mesma coisa: o shapefile tem vértices e não coordenadas geográficas lat/long.



Sent from my Samsung Galaxy smartphone.


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Marcello Benigno

unread,
Dec 19, 2016, 4:10:22 AM12/19/16
to python...@googlegroups.com
Sim, o shapefile pode estar em UTM. Neste repositório os dados estão em lat/long.

Ainda assim vale a pena experimentar a lib folium. Ela é bem mais simples.

Fernando Cruz

unread,
Jan 2, 2017, 1:26:59 PM1/2/17
to Python Brasil
Obrigado a todos. Conseguir com a ajuda de vocês.


Em quarta-feira, 7 de dezembro de 2016 07:44:23 UTC-3, Fernando Cruz escreveu:
Reply all
Reply to author
Forward
0 new messages