readshapefile returns a multipolygon as several polygons
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- data-visualization
Línea de trabajo
Comienza en el punto de entrada Basemap.readshapefile y reproduce el ejemplo proporcionado de Fiona, comparando los registros devueltos con las geometrías de origen. Está terminado cuando el caso MultiPolygon conserva la geometría y los metadatos de una feature de origen sin romper el caso Polygon independiente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I wanted to draw a choropleth map using basemap. My plan was to read the polygons from the shapefile vis readshapefile and then further process them using shapely, descartes, etc.
The problem that I encountered was that readshapefile returned multiple polygons for each MultiPolygon. This causes confusion, as for the enclosed polygon we will have more than one record.
I think the fix will be to return a MultiPolygon instead of multiple polygons.
Here is an example:
from collections import OrderedDict
import fiona
from mpl_toolkits.basemap import Basemap
rec1 = dict()
rec2 = dict()
rec1['id'] = 0
rec1['type'] = 'Feature'
rec1['properties'] = OrderedDict([(u'NAME', 'outer'),(u'VALUE', 100)])
rec1['geometry'] = dict()
rec1['geometry']['type'] = 'MultiPolygon'
rec1['geometry']['coordinates'] = [[[(-50,40),(50,40),
(50,-40),(-50,-40),
(-50,40)
]],
[[(-45,35),(45,35),
(45,-35),(-45,-35),
(-45,35)
]]]
rec2['id'] = 1
rec2['type'] = 'Feature'
rec2['properties'] = OrderedDict([(u'NAME', 'inner'),(u'VALUE', 1)])
rec2['geometry'] = dict()
rec2['geometry']['type'] = 'Polygon'
rec2['geometry']['coordinates'] = [[(-45,35),(45,35),
(45,-35),(-45,-35),
(-45,35)
]]
driver = 'ESRI Shapefile'
crs = {'no_defs': True, 'ellps': 'WGS84', 'datum': 'WGS84', 'proj': 'longlat'}
schema = {'geometry': 'Polygon',
'properties': {'NAME': 'str',
'VALUE': 'float:15.2'}}
with fiona.open(
'/tmp/foo.shp',
'w',
driver=driver,
crs=crs,
schema=schema) as c:
c.write(rec1)
c.write(rec2)
m = Basemap()
m.readshapefile('/tmp/foo','foo')
for info,region in zip(m.foo_info, m.foo):
print info
print region
for which the output is:
{'RINGNUM': 1, 'NAME': 'outer', 'VALUE': 100.0, 'SHAPENUM': 1}
[(-50.0, 40.0), (50.0, 40.0), (50.0, -40.0), (-50.0, -40.0), (-50.0, 40.0)]
{'RINGNUM': 2, 'NAME': 'outer', 'VALUE': 100.0, 'SHAPENUM': 1}
[(-45.0, 35.0), (-45.0, -35.0), (45.0, -35.0), (45.0, 35.0), (-45.0, 35.0)]
{'RINGNUM': 1, 'NAME': 'inner', 'VALUE': 1.0, 'SHAPENUM': 2}
[(-45.0, 35.0), (45.0, 35.0), (45.0, -35.0), (-45.0, -35.0), (-45.0, 35.0)]
- Lenguaje dominante
- Python
- Estrellas
- 818
- Forks
- 395
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de matplotlib/basemap
-
small bug in drawmapscaleAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
matplotlib/basemap#368 ·
-
Add numpy 2.5 compatibilityAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
matplotlib/basemap#655 ·
-
Python 3.14 wheelsAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
matplotlib/basemap#652 · 2 comentarios · 5 reacciones ·
-
Could you allow packaging 26.0 ?Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
matplotlib/basemap#649 · 2 reacciones ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
matplotlib/basemap#646 ·
Todos los issues de matplotlib/basemap
Issues similares
-
comp/tools duplicate P2 sweeper:risk-compatibility tool/mcp type/bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
NousResearch/hermes-agent#132042 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
deepset-ai/haystack#13092 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
EverMind-AI/Raven#845 ·
Los mantenedores suelen responder en 1 día
-
[Feature] 移除「切换到旧版知识库」入口Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
AstrBotDevs/AstrBot#10340 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
BasedHardware/omi#20401 · 1 comentario ·
Los mantenedores suelen responder en 1 día