Hi,

If you enclose something between single quotes in SQL it becomes a string.
SELECT ’building’  -> selects literally the given *string* –building—
However,

SELECT "building" -> selects the *value* of *field* –building-- (or 
“identifier” as is it called in SQL)

See for example https://www.sqlite.org/lang_keywords.html

I tested on Windows with trunk version of GDAL that this syntax works:

ogrinfo -dialect sqlite -sql "select geometry, "building" as bldg
from multipolygons where "building" is not null limit 1" hamburg-latest.osm.pbf

By reading this old thread 
http://osgeo-org.1560.x6.nabble.com/gdal-dev-OGR-SQL-Excecuting-select-where-column-name-contains-quot-quot-td5006377.html
 some older GDAL versions may need some more tweaking and inner double quotes 
must be escaped by back slash as \”

ogrinfo -dialect sqlite -sql "select geometry, \"building\" as bldg
from multipolygons where \"building\" is not null limit 1" 
hamburg-latest.osm.pbf


-Jukka Rahkonen-

Djordje Spasic wrote:

Thank you for the reply Jukka.

Neither "building:levels" nor "height" fields were located in osmconf.ini under 
the "[multipolygons]".
I have just added them as you suggested, and now the previously mentioned 
command creates the .shp file without raising an error.
I tried the initial:
-dialect sqlite -sql "select geometry, building as bldg, 'building:levels' as 
bldg_level, height as height from multipolygons" 
"C:\ladybug\osm_files\barcelona_shp_files"
and
-dialect sqlite -sql "select geometry, building as bldg, \"building:levels\" as 
bldg_level, height as height from multipolygons" 
"C:\ladybug\osm_files\barcelona_shp_files"
And they both work.

The problem is that: once the .shp file is created, and I open it, all shapes 
have the "building:level" value for the "bldg_level" field. Here is a 
screenshot:
https://www.dropbox.com/s/nmlkkzr85w225qb/sql_choosing_keys.jpg?dl=0

Why is this happening?

Kind Regards,
Djordje

-----------------------

On Saturday, November 12, 2016 10:29 AM, Rahkonen Jukka (MML) 
<jukka.rahko...@maanmittauslaitos.fi<mailto:jukka.rahko...@maanmittauslaitos.fi>>
 wrote:

Hi,

Related to your previous question, you can use SQL select only for fields which 
are included in osmconf.ini. Perhaps "height" is not. 'building:levels' may 
make a surprise for you, if ogr2ogr follows SQL specification it will select a 
fixed string. You should use double quotes instead and they may require 
escaping but I do not remember with which character. Start with easy test and 
more attributes with odd names one by one.

-Jukka-
________________________________
Lähettäjä: Djordje Spasic<mailto:issworld2...@yahoo.com>
Lähetetty: ‎12.‎11.‎2016 3:37
Vastaanottaja: Rahkonen Jukka 
(MML)<mailto:jukka.rahko...@maanmittauslaitos.fi>; 
gdal-dev@lists.osgeo.org<mailto:gdal-dev@lists.osgeo.org>
Aihe: Re: VS: [gdal-dev] How to replace an osm key?
Hi Jukka,
I have just tried to rename the fields with SQL. Here is the syntax:
"C:\gdal\ogr2ogr.exe" --config OSM_USE_CUSTOM_INDEXING NO -skipfailures -f 
"ESRI Shapefile" -dialect sqlite -sql "select geometry, building as bldg, 
'building:levels' as bldg_level, height as height from multipolygons" 
output_shps input.osm
It raises the following error message:
ERROR 1: In ExecutableSQL<>: sqlite3_prepare<select geometry, building as bldg, 
'building:levels' as bldg_level, height as height from multipolygons>:
no such column: height
Interestingly when I convert an .osm file to .shp files without using the SQL 
syntax, then the multipolygons.shp file does contain the "height" field. Not 
all shapes inside it contain it, but some do.

So why is the upper "no such column: height" error message raised?

Is something wrong with the SQL syntax?

Thank you for the reply.

Kind regards,
Djordje
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to