Skip to content

Instantly share code, notes, and snippets.

@tmcw
Created October 31, 2012 15:00
Show Gist options
  • Star 19 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save tmcw/3987512 to your computer and use it in GitHub Desktop.
Save tmcw/3987512 to your computer and use it in GitHub Desktop.
GIS with Python, Shapely, and Fiona Example 1 - CSV Files
import csv
from shapely.geometry import Point, mapping
from fiona import collection
schema = { 'geometry': 'Point', 'properties': { 'name': 'str' } }
with collection(
"some.shp", "w", "ESRI Shapefile", schema) as output:
with open('some.csv', 'rb') as f:
reader = csv.DictReader(f)
for row in reader:
point = Point(float(row['lon']), float(row['lat']))
output.write({
'properties': {
'name': row['name']
},
'geometry': mapping(point)
})
name lat lon
Chicago 41.88 -87.63
Kansas City 39.101 -94.584
@sariirc
Copy link

sariirc commented May 2, 2016

Why I only get 5 points, while my csv has 675?

this is the code:
schema = { 'geometry': 'Point', 'properties': { 'name': 'str' } }

with collection(
"restaurantes_bcn.shp", "w", "ESRI Shapefile", schema) as output:
with open('restaurantes_barcelona.csv', 'rb') as f:
reader = csv.DictReader(f, delimiter=',')
for row in reader:
point = Point(float(row['X']), float(row['Y']))
output.write({
'properties': {
'name': row['name']
},
'geometry': mapping(point)
})

with collection("restaurantes_bcn.shp", "r") as input:
schema = { 'geometry': 'Polygon', 'properties': { 'name': 'str' } }
with collection(
"buffer500.shp", "w", "ESRI Shapefile", schema) as output:
for point in input:
output.write({
'properties': {
'name': point['properties']['name']
},
'geometry': mapping(shape(point['geometry']).buffer(0.5))
})

@HADDADENICAR
Copy link

how you create the map of usa ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment