Хорошо, я нашел решение, я создаю свой собственный скрипт для удаления узлов из базы данных, используя многоугольник. Единственная таблица, которую я пропустил, это planet_osm_rels, на которой я нашел эту ссылку: отношение в OSM , которое объясняет, как связано planet_osm_rels, но это небольшая таблица, и вам нужно проанализировать текст из членов, извлекающих n и Чтобы найти соответствующие идентификаторы.
delete from planet_osm_line where osm_id in (select id from planet_osm_nodes WHERE st_contains(
ST_GeomFromText('POLYGON((110.59 -11.33484,110.59 -38.50,157 -38.50,157 -11.33484,110.59 -11.33484))',4326),
st_pointfromtext('POINT ('|| (lon / 10000000.0) || ' ' || (lat / 10000000.0) || ')',4326)))
delete from planet_osm_polygon where osm_id in (select id from planet_osm_nodes WHERE st_contains(
ST_GeomFromText('POLYGON((110.59 -11.33484,110.59 -38.50,157 -38.50,157 -11.33484,110.59 -11.33484))',4326),
st_pointfromtext('POINT ('|| (lon / 10000000.0) || ' ' || (lat / 10000000.0) || ')',4326)))
delete from planet_osm_point where osm_id in (select id from planet_osm_nodes WHERE st_contains(
ST_GeomFromText('POLYGON((110.59 -11.33484,110.59 -38.50,157 -38.50,157 -11.33484,110.59 -11.33484))',4326),
st_pointfromtext('POINT ('|| (lon / 10000000.0) || ' ' || (lat / 10000000.0) || ')',4326)))
delete from planet_osm_roads where osm_id in (select id from planet_osm_nodes WHERE st_contains(
ST_GeomFromText('POLYGON((110.59 -11.33484,110.59 -38.50,157 -38.50,157 -11.33484,110.59 -11.33484))',4326),
st_pointfromtext('POINT ('|| (lon / 10000000.0) || ' ' || (lat / 10000000.0) || ')',4326)))
delete from planet_osm_ways where id in (select w.id from planet_osm_nodes n INNER JOIN planet_osm_ways w ON n.id = ANY (w.nodes) WHERE st_contains(
ST_GeomFromText('POLYGON((110.59 -11.33484,110.59 -38.50,157 -38.50,157 -11.33484,110.59 -11.33484))',4326),
st_pointfromtext('POINT ('|| (n.lon / 10000000.0) || ' ' || (n.lat / 10000000.0) || ')',4326)))
И, наконец, мы удаляем узлы:
delete from planet_osm_nodes n where st_contains(ST_GeomFromText('POLYGON((110.59 -11.33484,110.59 -38.50,157 -38.50,157 -11.33484,110.59 -11.33484))',4326),
st_pointfromtext('POINT ('|| (n.lon / 10000000.0) || ' ' || (n.lat / 10000000.0) || ')',4326))