Last active
April 24, 2021 21:57
-
-
Save sgillies/8655640 to your computer and use it in GitHub Desktop.
Rasterio example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# python_powered.py | |
# | |
# Turns the 15 features in the Python logo | |
# | |
# http://www.python.org/community/logos/python-powered-h-140x182.png | |
# | |
# into a GeoJSON feature collection. | |
import json | |
import subprocess | |
import rasterio | |
from rasterio import features | |
with rasterio.drivers(): | |
with rasterio.open('python-powered-h-140x182.png') as src: | |
blue = src.read_band(3) | |
# Set every non-background pixel to 0 and then mask out the | |
# white background. | |
blue[blue < 255] = 0 | |
mask = blue != 255 | |
# transform to world coordinates so that we can map it | |
transform = [-35.0, 0.5, 0.0, 40.5, 0.0, -0.5] | |
# Get shapes from the positive part of the image. | |
shapes = list(features.shapes(blue, mask=mask, transform=transform)) | |
# Burn those shapes into a new image. | |
image = features.rasterize( | |
((g, 255) for g, v in shapes), | |
out_shape=blue.shape, fill=0, transform=transform ) | |
# Write the new image out. | |
kwargs = src.meta | |
kwargs['count'] = 1 | |
kwargs['driver'] = 'GTiff' | |
with rasterio.open('result.tif', 'w', **kwargs) as dst: | |
dst.write_band(1, image) | |
subprocess.call(['open', 'result.tif']) | |
# Write the shapes out to GeoJSON. | |
results = ({ | |
'type': 'Feature', | |
'properties': {'raster_val': v}, | |
'geometry': s } | |
for i, (s, v) | |
in enumerate(shapes) ) | |
collection = { | |
'type': 'FeatureCollection', | |
'features': list(results) } | |
with open('python-powered.json', 'w') as dst: | |
json.dump(collection, dst) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"# python_powered.py\n", | |
"#\n", | |
"# Turns the 15 features in the Python logo\n", | |
"#\n", | |
"# http://www.python.org/community/logos/python-powered-h-140x182.png\n", | |
"#\n", | |
"# into a GeoJSON feature collection.\n", | |
"#\n", | |
"# Along the way, demonstrates a round-trip through shapes() and rasterize().\n", | |
"\n", | |
"import json\n", | |
"import subprocess\n", | |
"\n", | |
"import rasterio\n", | |
"from rasterio import features\n", | |
"\n", | |
"\n", | |
"with rasterio.drivers():\n", | |
" with rasterio.open('python-powered-h-140x182.png') as src:\n", | |
" blue = src.read_band(3)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 1 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"# Set every non-background pixel to 0 and then mask out the\n", | |
"# white background (positive mask for foreground).\n", | |
"blue[blue < 255] = 0\n", | |
"mask = blue != 255\n", | |
"\n", | |
"# Show the source image.\n", | |
"import matplotlib.pyplot as plt\n", | |
"import matplotlib.cm as cm\n", | |
"plt.imshow(blue, cmap=cm.Greys_r)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 2, | |
"text": [ | |
"<matplotlib.image.AxesImage at 0x110dad210>" | |
] | |
}, | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x110d80d50>" | |
] | |
} | |
], | |
"prompt_number": 2 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"# Transform to world coordinates so that we can map it\n", | |
"transform = [-35.0, 0.5, 0.0, 40.5, 0.0, -0.5]\n", | |
"\n", | |
"# Perform a round-trip through shapes() and rasterize().\n", | |
"with rasterio.drivers():\n", | |
" \n", | |
" # Extract shapes from the positive (0) source image\n", | |
" shapes = list(features.shapes(blue, mask=mask, transform=transform))\n", | |
" \n", | |
" image = features.rasterize(\n", | |
" ((g, 255) for g, v in shapes), \n", | |
" out_shape=blue.shape, \n", | |
" fill=0, \n", | |
" transform=transform )" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plt.imshow(image, cmap=cm.Greys_r)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 4, | |
"text": [ | |
"<matplotlib.image.AxesImage at 0x11203cb50>" | |
] | |
}, | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\nQmCC\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x110961b50>" | |
] | |
} | |
], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"with rasterio.drivers():\n", | |
" kwargs = src.meta\n", | |
" kwargs['count'] = 1\n", | |
" kwargs['driver'] = 'GTiff'\n", | |
" with rasterio.open('result.tif', 'w', **kwargs) as dst:\n", | |
" dst.write_band(1, image)\n", | |
"\n", | |
"subprocess.call(['open', 'result.tif'])\n", | |
"\n", | |
"results = ({\n", | |
" 'type': 'Feature', \n", | |
" 'properties': {'raster_val': v}, \n", | |
" 'geometry': s }\n", | |
" for i, (s, v) \n", | |
" in enumerate(shapes) )\n", | |
"\n", | |
"collection = {\n", | |
" 'type': 'FeatureCollection', \n", | |
" 'features': list(results) }\n", | |
"\n", | |
"with open('python-powered.json', 'w') as dst:\n", | |
" json.dump(collection, dst)\n" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Did you use a world file or some other projection source for your source image? For me, GDAL reports
ERROR 6: No translation an empty SRS to PROJ.4 format is known.
and I get a pretty whacky geojson representation.