osmcode / osmcoastline

Extracts coastline data from OpenStreetMap planet file.
https://osmcode.org/osmcoastline/
GNU General Public License v3.0
108 stars 14 forks source link

Debian Sid package does not seem to work? #20

Closed karlwettin closed 8 years ago

karlwettin commented 8 years ago

On a brand new VM with Debian Sid and aptituded osmcoastlines running on a dataset containing either planet or a single triangle with good coastline I get the following output:

osm@coastlines:~$ osmcoastline -v -o out/coastline.db planet.osm.xml 
[ 0:00] Using SRS 4326 for output. (Change with the --srs/s option.)
[ 0:00] Writing to output database 'out/coastline.db'. (Was set with the --output-database/-o option.)
[ 0:00] Will create geometry index. (If you do not want an index use --no-index/-i.)
Warning 6: driver SQLite does not support creation option OGR_SQLITE_SYNCHRONOUS
ERROR 1: Transaction already established
terminate called after throwing an instance of 'gdalcpp::gdal_error'
  what():  starting transaction on layer 'error_lines' failed
Aborted
osm@coastlines:~$ 

Output is an empty database. My head is not able to parse the verbose output to something that well, but could it be that you start establish multiple transactions in multiple threads and attempt to execute it synchronous even though SQLITE does not support it?

I'll attempt at building from current git version this easter holiday.

karlwettin commented 8 years ago

So I cloned the (this) repo and compiled on the same Debian Sid. Still no luck. Even the built in test case fails with pretty much the same error:

osm@coastlines:~/osmcoastline/build$ ./runtest.sh 
Enabled debug option
[ 0:00] Using SRS 4326 for output. (Change with the --srs/s option.)
[ 0:00] Writing to output database 'testdata.db'. (Was set with the --output-database/-o option.)
[ 0:00] Removing database output file (if it exists) (because you told me to with --overwrite/-f).
[ 0:00] Will create geometry index. (If you do not want an index use --no-index/-i.)
Warning 6: driver SQLite does not support creation option OGR_SQLITE_SYNCHRONOUS
ERROR 1: Transaction already established
terminate called after throwing an instance of 'gdalcpp::gdal_error'
  what():  starting transaction on layer 'error_lines' failed
Aborted
osm@coastlines:~/osmcoastline/build$ 

Please advice.

joto commented 8 years ago

This is probably due to changes in how transactions are handled between gdal 1 and gdal 2. In gdal 1 transactions are per layer, in gdal 2 per datasource. I have to look at the details and find the best way to fix this. For the time being I suggest you just remove the code related to transactions. Without transactions it will work fine, just be a bit slower.