Skip to content

Instantly share code, notes, and snippets.

@markiliffe
Created September 27, 2016 17:24
Show Gist options
  • Save markiliffe/32c32f04b53e9ad54892e823d09e34ad to your computer and use it in GitHub Desktop.
Save markiliffe/32c32f04b53e9ad54892e823d09e34ad to your computer and use it in GitHub Desktop.
# Table Population: The Facebook population data, inputted by CSV. Points
# Table tzadmin: Tanzania administration boundaries. Polygons
# Table fb_pop: The sum of population for a given admin feature ID
# Table tzadmin_fbpop: The joined table that sums the sum of population and geographic features.
#Generate the table with the right values
CREATE TABLE population
(
gid serial NOT NULL,
the_geom geometry,
population float8,
CONSTRAINT population_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326)
);
CREATE INDEX population_the_geom_gist
ON population
USING gist
(the_geom );
#Create the geometry by concatenating both the longitude and latitude together with their CRS
UPDATE population
SET the_geom = ST_GeomFromText('POINT(' || longitude || ' ' || latitude || ')',4326);
# Create a separate table that sums the population within each polygon, based on the ST_Contains. Replicates Point in Polygon.
CREATE TABLE fb_pop AS
SELECT tzadmin.id, SUM(population.population)
FROM population,tzadmin
WHERE ST_Contains(tzadmin.the_geom, population.the_geom)
GROUP BY tzadmin.id
#Join the table with the
CREATE TABLE tzadmin_fbpop AS
SELECT gid, the_geom, latitude, longitude, sum FROM
INNER JOIN fb_pop ON (population.gid = fb_pop.id);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment