Skip to content

Instantly share code, notes, and snippets.

@trevormunoz
Last active March 6, 2017 17:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trevormunoz/5b5056ba703eee69f9d0adf0011c9d15 to your computer and use it in GitHub Desktop.
Save trevormunoz/5b5056ba703eee69f9d0adf0011c9d15 to your computer and use it in GitHub Desktop.
Recalculating centroids using Geopandas
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Representing Lyttonsville"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A short example of using a local data source to find an alternative centroid to serve as a representative place for geospatial analysis and mapping of a historic African American neighborhood."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import geopandas as gpd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lyttonville_gdf = gpd.read_file('./data/lyttonsville_boundaries.geojson.json')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Geopandas library loads the geojson file into a special kind of dataframe that includes a geometry."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cartodb_id</th>\n",
" <th>description</th>\n",
" <th>geometry</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>neighborhood</td>\n",
" <td>(POLYGON ((-77.04986599999999 39.005329, -77.0...</td>\n",
" <td>Lyttonsville</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cartodb_id description \\\n",
"0 1 neighborhood \n",
"\n",
" geometry name \n",
"0 (POLYGON ((-77.04986599999999 39.005329, -77.0... Lyttonsville "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lyttonville_gdf.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The data in the geojson file did not have a projection so we should add one for good practice"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"lyttonville_gdf.crs = {'init' :'epsg:4326'}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can do a simple plot just to visually inspect the geometry"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x112f68f28>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x112f2ae10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"lyttonville_gdf.plot()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 POINT (-77.04980123972688 39.00114669892462)\n",
"dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lyttonville_gdf.centroid"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since this geometry comes from a hand-traced vector layer, we should check to see if it's valid (this is less important for mapping and more important for other kinds of spatial analysis)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Self-intersection at or near point -77.049871958629211 39.005315612225999\n"
]
},
{
"data": {
"text/plain": [
"0 False\n",
"dtype: bool"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lyttonville_gdf.is_valid"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since the geometry is not valid as-is, let's create a simplified representation that approximates it and is valid for further analysis."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"simplified_lyttonville = lyttonville_gdf.convex_hull"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1162df6a0>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116365198>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"simplified_lyttonville.plot()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 True\n",
"dtype: bool"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simplified_lyttonville.is_valid"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And recalculate the centroid …"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 POINT (-77.04979424418984 39.00115393826775)\n",
"dtype: object"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simplified_lyttonville.centroid"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment