http://switchfromshapefile.org/
Integration with 3rd Party apps
Baseline Functionality
Enterprise Stuff
Desktop
Middleware
Languages
What about baseline functionality?
You get a function!!
You get a function!!
You get a function!!
You get a function!!
You get a function!!
You get a function!!
You get a function!!
You get a function!!
You get a function!!
MultiPolygon
?
CREATE EXTENSION postgis;?
SELECT phone_number FROM parcels
WHERE st_dwithin(geom, 'Point()', 1000);?
SELECT sum(st_length(geom)) FROM primary
WHERE phase = 'AB' AND fdr = 'Stims - A';?
SELECT truck_id FROM trucks t
ORDER BY t.geom <-> (
SELECT geom FROM transformers
WHERE trans_id = 42
)
LIMIT 1;?
SELECT truck_id FROM trucks t
JOIN depots d ON st_contains(d.geom,t.geom);?
SELECT depot_name, count(truck_id) FROM trucks t
JOIN depots d ON st_contains(d.geom,t.geom)
GROUP BY depot_name;5 common GIS questions asked.
No GIS software opened.
?
CREATE TABLE streetlamps(
polenumber text NOT NULL,
network_id int PRIMARY KEY,
wattage int NOT NULL,
location_desc text,
geom geometry(Point, 3448)
);!
CREATE INDEX ON streetlamps USING GIST (geom);?
CREATE TABLE streetlamps(
polenumber text NOT NULL,
network_id int PRIMARY KEY,
wattage int NOT NULL,
location_desc text,
geom geometry(Point, 3448)
);Common Patterns.
Common Queries.
?
SELECT parish, streetlamp_id FROM streetlamps sl
JOIN parishes p ON st_intersects(sl.geom,p.geom);?
SELECT parish, streetlamp_id FROM streetlamps sl
JOIN parishes p ON st_overlaps(sl.geom,p.geom);?
SELECT parish, streetlamp_id FROM streetlamps sl
JOIN parishes p ON st_contains(sl.geom,p.geom);
/* Other spatial predicates:
st_overlaps()
st_touches()
st_covers()
st_crosses()
st_disjoint()
*/?
SELECT parish, streetlamp_id FROM streetlamps sl
JOIN parishes p ON st_relate(sl.geom,p.geom, '102101FF2');?
CREATE TABLE new_xfmrs (
polenumber text,
x float, y float,
geom geometry(Point, 3448));
COPY new_xfmrs(polenumber, x, y) FROM
'/xfmr_file.csv' WITH (FORMAT 'CSV', HEADER);
UPDATE new_xfmrs SET geom = st_setsrid(st_makepoint(x, y), 3448);?
SELECT st_length(st_makeline(geom)) FROM truck_gps
WHERE truck_id = 42
AND gpstime::date >= '2024-10-01'::date
ORDER BY gpstime;?
SELECT
truck_id,
st_length(st_makeline(geom ORDER BY gpstime))
FROM truck_gps
WHERE gpstime::date > now() - '7 days'::interval
GROUP BY truck_id;?
SELECT line_id FROM primaryline p
WHERE st_length(geom) < 0.02;?
SELECT region, sum(st_area(geom)) * 9.25
FROM yards -- $9.25 per sqm
GROUP BY region; ?
SELECT trans_id, st_3dlength(geom) FROM UHV
ORDER BY st_3dlength(geom) DESC
LIMIT 10;?
SELECT st_distance(geom, 'Point(1 2') FROM poles
WHERE polenumber = '998457';?
SELECT st_maxdistance(geom, 'Point(7621 3111') FROM depots
WHERE depot = 'Filip';?
SELECT st_maxdistance(geom, 'Point(7621 3111') FROM depots
WHERE depot = 'Filip';
/*
st_perimeter
st_3dperimeter
st_azimuth
st_closestpoint
st_3dclosestpoint
*/?
SELECT st_maxdistance(geom, 'Point(7621 3111') FROM depots
WHERE depot = 'Filip';
/*
st_perimeter
st_3dperimeter
st_azimuth
st_closestpoint
st_3dclosestpoint
*/?
SELECT parish, st_union(geom) FROM communities
GROUP BY parish;?
SELECT
sum(st_length(st_intersection(pl.geom, r.geom)))
FROM primaryline pl
JOIN regions ON st_intersects(pl.geom,r.geom)
WHERE region = 'Weyland' AND feeder = 'Palm - A';?
SELECT
sum(st_area(st_difference(r.geom, l.geom)))
FROM lakes
JOIN regions ON st_intersects(pl.geom,r.geom)
WHERE region = 'Weyland' AND lake = 'Miriam';?
SELECT
sum(st_area(st_symdifference(r.geom, l.geom)))
FROM lakes
JOIN regions ON st_intersects(pl.geom,r.geom)
WHERE region = 'Weyland' AND lake = 'Miriam';?
SELECT st_x(geom) FROM poles
WHERE polenumber = '08431';?
SELECT st_x(geom), st_y(geom) FROM poles
WHERE polenumber = '08431';?
SELECT depot, st_npoints(geom) FROM depots;?
SELECT s1.line_id, xfmr_id FROM secondary s1
LEFT JOIN transformers t ON
st_intersects(t.geom, st_startpoint(s1.geom))
WHERE t.xfmr_id IS NULL;
?
SELECT s1.line_id, xfmr_id FROM secondary s1
LEFT JOIN transformers t ON
st_intersects(t.geom, st_startpoint(s1.geom))
WHERE t.xfmr_id IS NULL;
/*
ST_M
ST_MemSize
ST_NRings
ST_NumGeometries
ST_NumInteriorRings
*/?
CREATE TABLE good_truck_geoms AS
SELECT truck_id, gps_time, st_force2d(geom) FROM truck_gps_data;?
UPDATE TABLE primarylines
SET geom = st_snaptogrid(geom,0.1);?
UPDATE TABLE primarylines
SET geom = st_snaptogrid(geom,0.1);