Created
January 23, 2020 20:21
-
-
Save mhweber/b826811eea82a10df9c110c92a3e979c to your computer and use it in GitHub Desktop.
raster to point
This file contains 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
raster_2d = 2-dimensional array imported with gdal | |
nodata = nodata value from gdal import for 2-d array | |
geotransform = geotrasform from gdal import of 2-d array | |
def raster_to_point(raster_2d, nodata, geotransform): | |
raster_2d = raster_2d.flatten() | |
locs = np.where(raster_2d <> nodata)[0] #Get locs in array w/ data | |
raster_2d = raster_2d[locs] #Reduce data to those locs | |
geo = list(geotransform) #Make geotransform from raster a list | |
x = locs % xsize #Convert flattened locations to x coord | |
x = geo[0] + (x * geo[1]) + (geo[1] / 2) | |
y = locs / xsize #Convert flattened locations to y coord | |
y = geo[3] + (y * geo[5]) + (geo[5] / 2) | |
#Make pandas data frame | |
gdf = pd.DataFrame({'VALUE':raster_2d, 'Latitude':y, 'Longitude':x}) | |
#Convert to geopandas | |
geometry = [Point(xy) for xy in zip(gdf.Longitude, gdf.Latitude)] | |
gdf = gdf.drop(['Longitude', 'Latitude'], axis=1) | |
gdf = gpd.GeoDataFrame(gdf, geometry=geometry, crs=proj) | |
return gdf |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment