imposm3 icon indicating copy to clipboard operation
imposm3 copied to clipboard

It does not update the geometry in the db after correcting the shape of an object

Open geofrizz opened this issue 3 years ago • 2 comments

Context

Updated position of the nodes in a rounded building !! I discovery some objects with a geometry deformed (circle deformed in a line) eg: osm_id = 600860114 and 345949779 image_01

before the update (from the imposm 3 cache):

{
  "ways": {
    "600860114": {
      "ID": 600860114,
      "Tags": {
        "building": "yes"
      },
      "Metadata": null,
      "Refs": [
        5712178893,
        5712178894,
        5712178895,
        5712178896,
        5712178897,
        5712178898,
        5712178899,
        5712178900,
        5712178882,
        5712178883,
        5712178886,
        5712178887,
        5712178888,
        5712178889,
        5712178890,
        5712178891,
        5712178892,
        5712178884,
        5712178885,
        5712178893
      ],
      "Nodes": null,
      "nodes": {
        "5712178882": {
          "ID": 5712178882,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871589628094341
        },
        "5712178883": {
          "ID": 5712178883,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871591136836912
        },
        "5712178884": {
          "ID": 5712178884,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871639668056304
        },
        "5712178885": {
          "ID": 5712178885,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.87163899750405
        },
        "5712178886": {
          "ID": 5712178886,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871595327788498
        },
        "5712178887": {
          "ID": 5712178887,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.87160178185394
        },
        "5712178888": {
          "ID": 5712178888,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.87160966084295
        },
        "5712178889": {
          "ID": 5712178889,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871618126565153
        },
        "5712178890": {
          "ID": 5712178890,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.87162625701123
        },
        "5712178891": {
          "ID": 5712178891,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871633046352798
        },
        "5712178892": {
          "ID": 5712178892,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871637656399542
        },
        "5712178893": {
          "ID": 5712178893,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871635644742781
        },
        "5712178894": {
          "ID": 5712178894,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871630364143783
        },
        "5712178895": {
          "ID": 5712178895,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.87162332334512
        },
        "5712178896": {
          "ID": 5712178896,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871615444356138
        },
        "5712178897": {
          "ID": 5712178897,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871607481548125
        },
        "5712178898": {
          "ID": 5712178898,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871600273111369
        },
        "5712178899": {
          "ID": 5712178899,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.87159448959818
        },
        "5712178900": {
          "ID": 5712178900,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743381797351958,
          "Long": 13.871590885379817
        }
      }
    }
  }
}

in the db:

sde_pg_3=> select  id,osm_id,class,fclass,tags,st_astext(geom),st_geohash(geom,1) from osm_planet.polygons_building_yes where osm_id=600860114 ;
    id     |  osm_id   |  class   | fclass |       tags        |   st_astext   | st_geohash 
-----------+-----------+----------+--------+-------------------+---------------+------------
 339224248 | 600860114 | building | yes    | "building"=>"yes" | POLYGON EMPTY | 
(1 row) 

I updated only the position of every nodes, I don't added or deleted nodes !! image_02 image_03 After updated nodes position in OSM:

in the imposm 3 cache:

{
  "ways": {
    "600860114": {
      "ID": 600860114,
      "Tags": {
        "building": "yes"
      },
      "Metadata": null,
      "Refs": [
        5712178893,
        5712178894,
        5712178895,
        5712178896,
        5712178897,
        5712178898,
        5712178899,
        5712178900,
        5712178882,
        5712178883,
        5712178886,
        5712178887,
        5712178888,
        5712178889,
        5712178890,
        5712178891,
        5712178892,
        5712178884,
        5712178885,
        5712178893
      ],
      "Nodes": null,
      "nodes": {
        "5712178882": {
          "ID": 5712178882,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743379031323883,
          "Long": 13.871596585073974
        },
        "5712178883": {
          "ID": 5712178883,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743385066294195,
          "Long": 13.871597255626227
        },
        "5712178884": {
          "ID": 5712178884,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743384395741941,
          "Long": 13.871633968362147
        },
        "5712178885": {
          "ID": 5712178885,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743378276952598,
          "Long": 13.871634387457306
        },
        "5712178886": {
          "ID": 5712178886,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743390598350288,
          "Long": 13.87159985401621
        },
        "5712178887": {
          "ID": 5712178887,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743394956939937,
          "Long": 13.871604128786856
        },
        "5712178888": {
          "ID": 5712178888,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743397639148952,
          "Long": 13.871609744661981
        },
        "5712178889": {
          "ID": 5712178889,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743398561158301,
          "Long": 13.871615863451296
        },
        "5712178890": {
          "ID": 5712178890,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743397471510889,
          "Long": 13.871622066059643
        },
        "5712178891": {
          "ID": 5712178891,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743394454025747,
          "Long": 13.871627430477673
        },
        "5712178892": {
          "ID": 5712178892,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743389843979003,
          "Long": 13.871631537610227
        },
        "5712178893": {
          "ID": 5712178893,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.74337249343941,
          "Long": 13.87163262725764
        },
        "5712178894": {
          "ID": 5712178894,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743367464297506,
          "Long": 13.87162919067734
        },
        "5712178895": {
          "ID": 5712178895,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743363860079143,
          "Long": 13.871624161535436
        },
        "5712178896": {
          "ID": 5712178896,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743361932241413,
          "Long": 13.871618126565153
        },
        "5712178897": {
          "ID": 5712178897,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743362099879477,
          "Long": 13.871611923956806
        },
        "5712178898": {
          "ID": 5712178898,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.74336419535527,
          "Long": 13.871606140443618
        },
        "5712178899": {
          "ID": 5712178899,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743368051030728,
          "Long": 13.87160127893975
        },
        "5712178900": {
          "ID": 5712178900,
          "Tags": null,
          "Metadata": null,
          "Lat": 13.743373163991663,
          "Long": 13.871597926178481
        }
      }
    }
  }
}

But in the db the geometry update is not applied !!

sde_pg_3=> select  id,osm_id,class,fclass,tags,st_astext(geom),st_geohash(geom,1) from osm_planet.polygons_building_yes where osm_id=600860114 ;
    id     |  osm_id   |  class   | fclass |       tags        |   st_astext   | st_geohash 
-----------+-----------+----------+--------+-------------------+---------------+------------
 339224248 | 600860114 | building | yes    | "building"=>"yes" | POLYGON EMPTY | 
(1 row)

Expected Behavior

Update of all elements of the geometry in the db !!

Actual Behavior

Imposm update only the imposm 3 cache but not the db !!

Possible Fix

Temporary for resolve the problem it's possible to add a new tag in the way, eg: name

{
  "ways": {
    "600860114": {
      "ID": 600860114,
      "Tags": {
        "building": "yes",
        "name": "test for update"
      },
      "Metadata": null,
      "Refs": [
        5712178893,
        5712178894,
	...

In the db:

sde_pg_3=> select  id,osm_id,class,fclass,tags,st_astext(geom),st_geohash(geom,1) from osm_planet.polygons_building_yes where osm_id=600860114 ;
   id    |  osm_id   |  class   | fclass |                     tags                     |                                                                                                                                                                                                                                                                                                                                                   st_astext                                                                                                                                                                                                                                                                                                                                                   | st_geohash 
---------+-----------+----------+--------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------
 1882534 | 600860114 | building | yes    | "name"=>"test for update", "building"=>"yes" | POLYGON((13.871596585074 13.7433790313239,13.8715972556262 13.7433850662942,13.8715998540162 13.7433905983503,13.8716041287869 13.7433949569399,13.871609744662 13.743397639149,13.8716158634513 13.7433985611583,13.8716220660596 13.7433974715109,13.8716274304777 13.7433944540257,13.8716315376102 13.743389843979,13.8716339683621 13.7433843957419,13.8716343874573 13.7433782769526,13.8716326272576 13.7433724934394,13.8716291906773 13.7433674642975,13.8716241615354 13.7433638600791,13.8716181265652 13.7433619322414,13.8716119239568 13.7433620998795,13.8716061404436 13.7433641953553,13.8716012789397 13.7433680510307,13.8715979261785 13.7433731639917,13.871596585074 13.7433790313239)) | s
(1 row)

Steps to Reproduce

Other objects have the same problem: 611280979 (way) 621705015 (way) 621705026 (way) 644554965 (way) 644554981 (way) ... and other

Context

Your Environment

  • Version used: imposm 3 v 0.10.0
  • Environment name and version (e.g. PostgreSQL x.y.z with PostGIS a.b.c): postgresql: PostgreSQL 11.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit postgis: 2.5 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
  • Server type and version: VMWare virtual server
  • Operating System and version: Red Hat Enterprise Linux Server release 7.8 (Maipo)

geofrizz avatar Sep 24 '20 14:09 geofrizz

Steps to Reproduce

imho: if you can add a

  • minimal reduced osm xml file ( 1 osm way with a minimal nodes )
  • minimal osc file ( minimal osm xml change file )
  • minimal imposm3 mapping file

then it would be helpful in the debugging and the fixing and we can add this file as a test file ..

like the "single_table" test in the /test directory ..

or you can use the ./test/expire_tiles_mapping.yml as an example

ImreSamu avatar Sep 24 '20 15:09 ImreSamu

File .osm:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
  <node id='5787817829' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186661' />
  <node id='5787817830' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186679' />
  <node id='5787817831' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186664' />
  <node id='5787817832' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186094' />
  <node id='5787817833' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186061' />
  <node id='5787817834' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.818606' />
  <node id='5787817835' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186093' />
  <node id='5787817836' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186616' />
  <node id='5787817837' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186541' />
  <node id='5787817838' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186447' />
  <node id='5787817839' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186344' />
  <node id='5787817840' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186244' />
  <node id='5787817841' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186158' />
  <node id='5787817842' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186155' />
  <node id='5787817843' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.818624' />
  <node id='5787817844' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186339' />
  <node id='5787817845' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.818644' />
  <node id='5787817846' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186534' />
  <node id='5787817847' timestamp='2020-03-03T09:40:34Z' uid='6334327' user='mhrana98' visible='true' version='2' changeset='81718087' lat='22.6177832' lon='89.8186611' />
  <way id='611280979' timestamp='2018-07-26T19:14:05Z' uid='4439816' user='mrburatti' visible='true' version='1' changeset='61098226'>
    <nd ref='5787817842' />
    <nd ref='5787817843' />
    <nd ref='5787817844' />
    <nd ref='5787817845' />
    <nd ref='5787817846' />
    <nd ref='5787817847' />
    <nd ref='5787817829' />
    <nd ref='5787817830' />
    <nd ref='5787817831' />
    <nd ref='5787817836' />
    <nd ref='5787817837' />
    <nd ref='5787817838' />
    <nd ref='5787817839' />
    <nd ref='5787817840' />
    <nd ref='5787817841' />
    <nd ref='5787817832' />
    <nd ref='5787817833' />
    <nd ref='5787817834' />
    <nd ref='5787817835' />
    <nd ref='5787817842' />
    <tag k='building' v='yes' />
  </way>
</osm>

file .osc:

<?xml version='1.0' encoding='UTF-8'?>
<osmChange version="0.6" generator="Osmosis 0.47.4">
  <modify>
    <node id="5787817829" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177629" lon="89.8186479"/>
    <node id="5787817830" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177664" lon="89.8186535"/>
    <node id="5787817831" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177715" lon="89.8186575"/>
    <node id="5787817832" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177984" lon="89.8186334"/>
    <node id="5787817833" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177957" lon="89.8186272"/>
    <node id="5787817834" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177913" lon="89.8186224"/>
    <node id="5787817835" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177857" lon="89.8186193"/>
    <node id="5787817836" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177775" lon="89.8186595"/>
    <node id="5787817837" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177838" lon="89.8186593"/>
    <node id="5787817838" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177897" lon="89.8186569"/>
    <node id="5787817839" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177945" lon="89.8186526"/>
    <node id="5787817840" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177978" lon="89.8186468"/>
    <node id="5787817841" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177991" lon="89.8186401"/>
    <node id="5787817842" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177795" lon="89.8186184"/>
    <node id="5787817843" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177733" lon="89.8186197"/>
    <node id="5787817844" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177679" lon="89.8186231"/>
    <node id="5787817845" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177638" lon="89.8186283"/>
    <node id="5787817846" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177615" lon="89.8186346"/>
    <node id="5787817847" version="3" timestamp="2020-09-24T16:30:01Z" uid="9069087" user="UNGSC-DTLM-GeoFrizz" changeset="91452432" lat="22.6177611" lon="89.8186414"/>
  </modify>
</osmChange>

mapping.yml:

tags:
  load_all: true
  exclude: 
  - source*
  - comment*
  - attribution*

areas:
  area_tags: [building, landuse, leisure, natural, place]
  linear_tags: [highway, barrier, waterway, railway]
  
tables:
  polygons_building_yes:
    columns:
    - name: osm_id
      type: id
    - name: class
      type: mapping_key
    - name: fclass
      type: mapping_value
    - name: tags
      type: hstore_tags
    - name: geom
      type: validated_geometry
    mapping:
      building:
      - "yes"
    type: polygon

geofrizz avatar Sep 24 '20 17:09 geofrizz