Merge branch 'gdb10lt'
This breaks "test-rivers" for Nemunas.
This commit is contained in:
commit
dcf4c02307
21
IV/Makefile
21
IV/Makefile
@ -1,8 +1,9 @@
|
|||||||
OSM ?= lithuania-latest.osm.pbf
|
OSM ?= lithuania-latest.osm.pbf
|
||||||
WHERE ?= name='Visinčia' OR name='Šalčia' OR name='Nemunas' OR name='Merkys'
|
RIVERFILTER = Visinčia|Šalčia|Nemunas
|
||||||
#WHERE ?= name like '%'
|
|
||||||
SLIDES = slides-2021-03-29.pdf
|
SLIDES = slides-2021-03-29.pdf
|
||||||
|
|
||||||
|
GDB10LT ?= $(wildcard GDB10LT-static-*.zip)
|
||||||
|
|
||||||
# Max figure size (in meters) is when it's width is TEXTWIDTH_CM on scale 1:25k
|
# Max figure size (in meters) is when it's width is TEXTWIDTH_CM on scale 1:25k
|
||||||
SCALEDWIDTH = $(shell awk '/^TEXTWIDTH_CM/{print 25000/100*$$3}' layer2img.py)
|
SCALEDWIDTH = $(shell awk '/^TEXTWIDTH_CM/{print 25000/100*$$3}' layer2img.py)
|
||||||
|
|
||||||
@ -281,12 +282,20 @@ $(OSM):
|
|||||||
wget http://download.geofabrik.de/europe/$@
|
wget http://download.geofabrik.de/europe/$@
|
||||||
|
|
||||||
.PHONY: refresh-rivers
|
.PHONY: refresh-rivers
|
||||||
refresh-rivers: aggregate-rivers.sql $(OSM) .faux_db ## Refresh rivers.sql from Open Street Maps
|
refresh-rivers: aggregate-rivers.sql .faux_db ## Refresh rivers.sql from GDB10LT
|
||||||
PGPASSWORD=osm osm2pgsql -c --multi-geometry -H 127.0.0.1 -d osm -U osm $(OSM)
|
@if [ ! -f "$(GDB10LT)" ]; then \
|
||||||
bash db -v where="$(WHERE)" -f $<
|
echo "ERROR: GDB10LT-static-*.zip not found. Do GDB10LT=<...>"; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
mkdir -p .tmp/shp; unzip -d .tmp/shp "$(GDB10LT)" 'HIDRO_L.*'
|
||||||
|
shp2pgsql -s 3857 -d ".tmp/shp/HIDRO_L.shp" | \
|
||||||
|
awk '!/^INSERT/{print}; /^INSERT/&&/$(RIVERFILTER)/{print;next}' | \
|
||||||
|
bash ./db
|
||||||
|
bash db -f $<
|
||||||
(\
|
(\
|
||||||
echo '-- Generated at $(shell TZ=UTC date +"%FT%TZ") on $(shell whoami)@$(shell hostname -f)'; \
|
echo '-- Generated at $(shell TZ=UTC date +"%FT%TZ") on $(shell whoami)@$(shell hostname -f)'; \
|
||||||
echo '-- Select: $(WHERE)'; \
|
echo '-- Rivers: $(RIVERFILTER)'; \
|
||||||
docker exec wm-mj pg_dump --clean -Uosm osm -t wm_rivers | tr -d '\r' \
|
docker exec wm-mj pg_dump --clean -Uosm osm -t wm_rivers | tr -d '\r' \
|
||||||
) > rivers.sql.tmp
|
) > rivers.sql.tmp
|
||||||
mv rivers.sql.tmp rivers.sql
|
mv rivers.sql.tmp rivers.sql
|
||||||
|
rm -fr .tmp/shp
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* Aggregates rivers by name and proximity. */
|
/* Aggregates rivers by name and proximity. */
|
||||||
drop function if exists aggregate_rivers;
|
drop function if exists aggregate_rivers;
|
||||||
create function aggregate_rivers() returns table(
|
create function aggregate_rivers() returns table(
|
||||||
osm_id bigint,
|
id bigint,
|
||||||
name text,
|
name text,
|
||||||
way geometry
|
way geometry
|
||||||
) as $$
|
) as $$
|
||||||
@ -12,7 +12,7 @@ declare
|
|||||||
begin
|
begin
|
||||||
while (select count(1) from wm_rivers_tmp) > 0 loop
|
while (select count(1) from wm_rivers_tmp) > 0 loop
|
||||||
select * from wm_rivers_tmp limit 1 into c;
|
select * from wm_rivers_tmp limit 1 into c;
|
||||||
delete from wm_rivers_tmp a where a.osm_id = c.osm_id;
|
delete from wm_rivers_tmp a where a.id = c.id;
|
||||||
changed = true;
|
changed = true;
|
||||||
while changed loop
|
while changed loop
|
||||||
changed = false;
|
changed = false;
|
||||||
@ -22,11 +22,11 @@ begin
|
|||||||
st_dwithin(a.way, c.way, 500)
|
st_dwithin(a.way, c.way, 500)
|
||||||
) loop
|
) loop
|
||||||
c.way = st_linemerge(st_union(c.way, cc.way));
|
c.way = st_linemerge(st_union(c.way, cc.way));
|
||||||
delete from wm_rivers_tmp a where a.osm_id = cc.osm_id;
|
delete from wm_rivers_tmp a where a.id = cc.id;
|
||||||
changed = true;
|
changed = true;
|
||||||
end loop;
|
end loop;
|
||||||
end loop; -- while changed
|
end loop; -- while changed
|
||||||
return query select c.osm_id, c.name, c.way;
|
return query select c.id, c.name, c.way;
|
||||||
end loop; -- count(1) from wm_rivers_tmp > 0
|
end loop; -- count(1) from wm_rivers_tmp > 0
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
@ -35,13 +35,12 @@ $$ language plpgsql;
|
|||||||
drop index if exists wm_rivers_tmp_id;
|
drop index if exists wm_rivers_tmp_id;
|
||||||
drop index if exists wm_rivers_tmp_gix;
|
drop index if exists wm_rivers_tmp_gix;
|
||||||
drop table if exists wm_rivers_tmp;
|
drop table if exists wm_rivers_tmp;
|
||||||
create temporary table wm_rivers_tmp (osm_id bigint, name text, way geometry);
|
create temporary table wm_rivers_tmp (id bigint, name text, way geometry);
|
||||||
create index wm_rivers_tmp_id on wm_rivers_tmp(osm_id);
|
create index wm_rivers_tmp_id on wm_rivers_tmp(id);
|
||||||
create index wm_rivers_tmp_gix on wm_rivers_tmp using gist(way) include(name);
|
create index wm_rivers_tmp_gix on wm_rivers_tmp using gist(way) include(name);
|
||||||
|
|
||||||
insert into wm_rivers_tmp
|
insert into wm_rivers_tmp
|
||||||
select p.osm_id, p.name, p.way from planet_osm_line p
|
select p.gid as id, p.vardas as name, p.geom as way from hidro_l p;
|
||||||
where waterway in ('river', 'stream', 'canal') and :where;
|
|
||||||
|
|
||||||
drop table if exists wm_rivers;
|
drop table if exists wm_rivers;
|
||||||
create table wm_rivers as (
|
create table wm_rivers as (
|
||||||
|
File diff suppressed because one or more lines are too long
@ -68,16 +68,23 @@ end $$ language plpgsql;
|
|||||||
|
|
||||||
delete from wm_visuals where name like 'salvis%';
|
delete from wm_visuals where name like 'salvis%';
|
||||||
insert into wm_visuals(name, way) values('salvis', (
|
insert into wm_visuals(name, way) values('salvis', (
|
||||||
select st_intersection(
|
with multismall as (
|
||||||
(select st_union(way) from wm_rivers where name in ('Šalčia', 'Visinčia')),
|
select st_intersection(
|
||||||
wm_bbox(
|
(select st_union(way) from wm_rivers where name in ('Šalčia', 'Visinčia')),
|
||||||
st_closestpoint(
|
wm_bbox(
|
||||||
(select way from wm_rivers where name='Šalčia'),
|
st_closestpoint(
|
||||||
(select way from wm_rivers where name='Visinčia')
|
(select way from wm_rivers where name='Šalčia'),
|
||||||
),
|
(select way from wm_rivers where name='Visinčia')
|
||||||
:scaledwidth
|
),
|
||||||
)
|
:scaledwidth
|
||||||
|
)
|
||||||
|
) ways
|
||||||
)
|
)
|
||||||
|
-- protecting against very small bends that were cut
|
||||||
|
-- in the corner of the picture
|
||||||
|
select st_union(a.geom)
|
||||||
|
from st_dump((select ways from multismall)) a
|
||||||
|
where st_length(a.geom) >= 100
|
||||||
));
|
));
|
||||||
|
|
||||||
do $$
|
do $$
|
||||||
@ -110,7 +117,7 @@ begin
|
|||||||
foreach i in array array[16, 64, 256] loop
|
foreach i in array array[16, 64, 256] loop
|
||||||
geom1 = st_simplify((select way from wm_visuals where name='salvis'), i);
|
geom1 = st_simplify((select way from wm_visuals where name='salvis'), i);
|
||||||
geom2 = st_simplifyvw((select way from wm_visuals where name='salvis'), i*i);
|
geom2 = st_simplifyvw((select way from wm_visuals where name='salvis'), i*i);
|
||||||
geom3 = st_simplifywm((select way from wm_visuals where name='salvis'), i);
|
geom3 = st_simplifywm((select way from wm_visuals where name='salvis'), i, 50, 'salvis-' || i);
|
||||||
insert into wm_visuals(name, way) values
|
insert into wm_visuals(name, way) values
|
||||||
('salvis-douglas-' || i, geom1),
|
('salvis-douglas-' || i, geom1),
|
||||||
('salvis-douglas-' || i || '-chaikin', st_chaikinsmoothing(geom1, 5)),
|
('salvis-douglas-' || i || '-chaikin', st_chaikinsmoothing(geom1, 5)),
|
||||||
|
@ -335,7 +335,7 @@ create function wm_bend_attrs(
|
|||||||
dbggen integer default null
|
dbggen integer default null
|
||||||
) returns wm_t_attrs[] as $$
|
) returns wm_t_attrs[] as $$
|
||||||
declare
|
declare
|
||||||
isolation_threshold constant real default 0.5;
|
isolation_threshold constant real default 0.3;
|
||||||
attrs wm_t_attrs[];
|
attrs wm_t_attrs[];
|
||||||
attr wm_t_attrs;
|
attr wm_t_attrs;
|
||||||
bend geometry;
|
bend geometry;
|
||||||
|
Loading…
Reference in New Issue
Block a user