omniscale / imposm3

Imposm imports OpenStreetMap data into PostGIS
http://imposm.org/docs/imposm3/latest/
Apache License 2.0
710 stars 156 forks source link

geojson_intersects_feature does not work with geojsons that go to the poles #235

Open pnorman opened 4 years ago

pnorman commented 4 years ago

Using the config files in #227, I get an error with this geojson

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "properties": {
                "iso1A2": "AQ",
                "iso1A3": "ATA",
                "iso1N3": "010",
                "wikidata": "Q51",
                "nameEn": "Antarctica",
                "level": "region",
                "callingCodes": [
                    "672"
                ]
            },
            "geometry": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [180, -60],
                        [180, -90],
                        [-180, -90],
                        [-180, -60],
                        [180, -60]
                    ]
                ]
            }
        }
    ]
}
[2020-02-19T11:44:47-08:00] 0:00:00 IllegalArgumentException: RobustDeterminant encountered non-finite numbers
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x0]

runtime stack:
runtime.throw(0x99f1ce, 0x2a)
        /usr/lib/go-1.10/src/runtime/panic.go:616 +0x81
runtime.sigpanic()
        /usr/lib/go-1.10/src/runtime/signal_unix.go:372 +0x28e

goroutine 1 [syscall]:
runtime.cgocall(0x867940, 0xc4201baa58, 0x8fd5a0)
        /usr/lib/go-1.10/src/runtime/cgocall.go:128 +0x64 fp=0xc4201baa28 sp=0xc4201ba9f0 pc=0x407904
github.com/omniscale/imposm3/geom/geos._Cfunc_GEOSGeom_destroy_r(0x2c041d0, 0x2c03780)
        _cgo_gotypes.go:457 +0x41 fp=0xc4201baa58 sp=0xc4201baa28 pc=0x563571
github.com/omniscale/imposm3/geom/geos.(*Geos).Destroy.func1(0x2c041d0, 0x2c03780)
        /home/pnorman/go/src/github.com/omniscale/imposm3/geom/geos/geos.go:77 +0x8f fp=0xc4201baa90 sp=0xc4201baa58 pc=0x56885f
github.com/omniscale/imposm3/geom/geos.(*Geos).Destroy(0xc420160880, 0xc4200b4120)
        /home/pnorman/go/src/github.com/omniscale/imposm3/geom/geos/geos.go:77 +0x66 fp=0xc4201baac8 sp=0xc4201baa90 pc=0x565446
github.com/omniscale/imposm3/mapping.geosPolygon(0xc420160880, 0xc420160ba0, 0x1, 0x1, 0x1, 0x1, 0x0)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/columns_intersection.go:179 +0x278 fp=0xc4201bab48 sp=0xc4201baac8 pc=0x5b9228
github.com/omniscale/imposm3/mapping.loadFeatures(0xc4200b0a74, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4200d2680, 0x1a, 0xc420174ff0, ...)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/columns_intersection.go:58 +0x30f fp=0xc4201bac30 sp=0xc4201bab48 pc=0x5b83ff
github.com/omniscale/imposm3/mapping.MakeIntersectsFeatureField(0xc4200b0a74, 0xc, 0x993ec4, 0x1a, 0x986349, 0x6, 0x0, 0x9acdd0, 0x0, 0x0, ...)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/columns_intersection.go:71 +0x60 fp=0xc4201bad30 sp=0xc4201bac30 pc=0x5b88a0
github.com/omniscale/imposm3/mapping.MakeColumnType(0xc4200c7380, 0xc4200b6640, 0x1, 0x1)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/mapping.go:230 +0x1c4 fp=0xc4201baee8 sp=0xc4201bad30 pc=0x5bc474
github.com/omniscale/imposm3/mapping.makeRowBuilder(0xc4200bb0e0, 0x98971c, 0xa, 0x416601)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/mapping.go:213 +0xd4 fp=0xc4201bafd8 sp=0xc4201baee8 pc=0x5bc0a4
github.com/omniscale/imposm3/mapping.(*Mapping).tables(0xc4201aa410, 0x98971c, 0xa, 0xc4201751a0, 0x0, 0x0)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/mapping.go:196 +0x115 fp=0xc4201bb0e8 sp=0xc4201bafd8 pc=0x5bbdd5
github.com/omniscale/imposm3/mapping.(*Mapping).lineStringMatcher(0xc4201aa410, 0x9ec900, 0xc4201750e0, 0x0, 0x0)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/matcher.go:29 +0xc8 fp=0xc4201bb150 sp=0xc4201bb0e8 pc=0x5bed38
github.com/omniscale/imposm3/mapping.(*Mapping).createMatcher(0xc4201aa410, 0x0, 0x0)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/mapping.go:150 +0x7d fp=0xc4201bb188 sp=0xc4201bb150 pc=0x5bb6ed
github.com/omniscale/imposm3/mapping.New(0xc4201ac000, 0x11e, 0x31e, 0x11e, 0x31e, 0x0)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/mapping.go:113 +0xac fp=0xc4201bb1d8 sp=0xc4201bb188 pc=0x5bb27c
github.com/omniscale/imposm3/mapping.FromFile(0x7ffe552ef641, 0xb, 0xc42009a120, 0xc420075268, 0x416eb8)
        /home/pnorman/go/src/github.com/omniscale/imposm3/mapping/mapping.go:98 +0x87 fp=0xc4201bb220 sp=0xc4201bb1d8 pc=0x5bb197
github.com/omniscale/imposm3/import_.Import(0x7ffe552ef659, 0x33, 0x98a34d, 0xc, 0x98a34d, 0xc, 0x7ffe552ef641, 0xb, 0xf11, 0x0, ...)
        /home/pnorman/go/src/github.com/omniscale/imposm3/import_/import.go:50 +0x182 fp=0xc4201bb9d8 sp=0xc4201bb220 pc=0x863f12
main.Main(0x9ad550)
        /home/pnorman/go/src/github.com/omniscale/imposm3/cmd/imposm/main.go:48 +0x54b fp=0xc4201bbf70 sp=0xc4201bb9d8 pc=0x8671ab
main.main()
        /home/pnorman/go/src/github.com/omniscale/imposm3/cmd/imposm/main.go:77 +0x2d fp=0xc4201bbf88 sp=0xc4201bbf70 pc=0x86747d
runtime.main()
        /usr/lib/go-1.10/src/runtime/proc.go:198 +0x212 fp=0xc4201bbfe0 sp=0xc4201bbf88 pc=0x4328f2
runtime.goexit()
        /usr/lib/go-1.10/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc4201bbfe8 sp=0xc4201bbfe0 pc=0x4601f1

goroutine 20 [syscall]:
os/signal.signal_recv(0x0)
        /usr/lib/go-1.10/src/runtime/sigqueue.go:139 +0xa6
os/signal.loop()
        /usr/lib/go-1.10/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.0
        /usr/lib/go-1.10/src/os/signal/signal_unix.go:28 +0x41

This is not a critical issue for me because I can drop Antarctica from the GeoJSON, but I wanted to document this bug.