Sorry to pollute this list (again !) with non GDAL related information, however -

I made a mistake in my answer about the SQL statement and the nerd part of my brain just won't let go. So:

 * The SQL where-part  contains a combination of st_intersects (geom,
   /..some geometry resulting function../) and not st_touches (geom,
   /..same geometry resulting function../)
   "intersects" and "not touches" is equivalent to "within", so you can
   probably rewrite the where part to: *

   WHERE ST_Within(geom, (SELECT geom FROM
   countries.geometries_boundary_buffer_10km('and')*))

The above is /not/ correct. The equivalent to "intersects and not touches" is "within or overlaps". The where statement should be:

*WHERE ST_Within(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and')*)) *OR* *ST_Overlaps(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and')*))

Which is marginally better than the original where.

But if you read the entire SQL statement, I would assume the purpose would be something like: "/Fetch all gridcells that is wihtin a 10 km. distance from a set of countries"//./

In that case the where part could  be simplified (and running considerably faster) by using ST_DWithin:

*SELECT
    a.name,
    a.left,
    a.top,
    a.right,
    a.bottom,
    a.geom
FROM grids.grid_1_25grad a
JOIN countries.table_with_countries b ON ST_DWIthin (a.geom, b.geom, 10000.0)*

If the 2 tables involved has the same SRID (using meters as distance unit) and the spatial columns is of type geometry
**


**


Med venlig hilsen / Best regards

Bo Victor Thomsen

Den 09-11-2022 kl. 21:55 skrev Bo Victor Thomsen:

Thorsten -

It seems that your workstation has QGIS installed (The picture of file explorer shows a QGIS icon for one of the shape files). Why dont you use the DBManager function in QGIS to test your SQL ?

Sanitized version of the select:

*--

SELECT
    name,
    left,
    top,
    right,
    bottom,
    geom
FROM grids.grid_1_25grad
WHERE
    ST_Intersects(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and'))) AND NOT     ST_Touches   (geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and')))*

--

  * You are selecting features from table /grids.grid_1_25grad/. The
    name of the table indicates it contains grid cells - like the ones
    you show in the picture.

  * The SQL where-part  contains a combination of st_intersects (geom,
    /..some geometry resulting funtion../) and not st_touches (geom,
    /..same geometry resulting funtion../)
    "intersects" and "not touches" is equivalent to "within", so you
    can probably rewrite the where part to: *

    WHERE ST_Within(geom, (SELECT geom FROM
    countries.geometries_boundary_buffer_10km('and')))*

*
*

Med venlig hilsen / Best regards

Bo Victor Thomsen

Den 09-11-2022 kl. 14:53 skrev Rahkonen Jukka:

Hi,

You are selecting data from table grids.grid_1_25grad. I suppose that table contains grid polygons. By your image you seem to want some buffered geometry. Spend some time for thinking about what data do you want and where to get it. You can test your queries with for example pgAdmin that can preview the geometries. Or use OpenJUMP that is an excellent tool for visualizing PostGIS query results.

-Jukka Rahkonen-

*Lähettäjä:*Leber, Thorsten <thorsten.le...@hensoldt.net>
*Lähetetty:* keskiviikko 9. marraskuuta 2022 15.46
*Vastaanottaja:* Rahkonen Jukka <jukka.rahko...@maanmittauslaitos.fi>
*Aihe:* AW: org2org

Hi Jukka,

with geometry al 5 files are created

ogr2ogr -f "ESRI Shapefile" C:\RenderTest\raster_clipper_and.shp PG:"host=10.49.20.42 port=5432 user=tilemill password=test dbname=nextgen" -sql "SELECT \""name\"", \""left\"", top, \""right\"", bottom, geom FROM grids.grid_1_25grad WHERE ST_Intersects(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and'))) AND NOT ST_Touches(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and')))" -s_srs "EPSG:4326" -t_srs "EPSG:4326" -overwrite -lco ENCODING=utf8

but it looks strange

I would expect this

Thorsten

*Von:*Rahkonen Jukka <jukka.rahko...@maanmittauslaitos.fi>
*Gesendet:* Mittwoch, 9. November 2022 13:10
*An:* Leber, Thorsten <thorsten.le...@hensoldt.net>
*Betreff:* Re: org2org

This message was sent from outside of HENSOLDT. Please do not click on links or open attachments unless you validate the source of this email and know the content is safe.

Hi,

Try to add a geometry into the selection -sql "SELECT \""name\"", \""left\"", top, \""right\"", bottom FROM..

-Jukka-

*Lähettäjä:*Leber, Thorsten <thorsten.le...@hensoldt.net>
*Lähetetty:* keskiviikko 9. marraskuuta 2022 13.53
*Vastaanottaja:* Rahkonen Jukka <jukka.rahko...@maanmittauslaitos.fi>
*Aihe:* AW: org2org

ogr2ogr -f "ESRI Shapefile" C:\RenderTest\raster_clipper_and.shp PG:"host=10.49.20.42 port=5432 user=tilemill password=test dbname=nextgen" -sql "SELECT \""name\"", \""left\"", top, \""right\"", bottom FROM grids.grid_1_25grad WHERE ST_Intersects(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and'))) AND NOT ST_Touches(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and')))" -s_srs EPSG:4326 -t_srs EPSG:4326 -overwrite -lco ENCODING=utf8

this works now without any warning but still only 3 files in output folder

*Von:*Rahkonen Jukka <jukka.rahko...@maanmittauslaitos.fi>
*Gesendet:* Mittwoch, 9. November 2022 12:21
*An:* Leber, Thorsten <thorsten.le...@hensoldt.net>; gdal-dev@lists.osgeo.org
*Betreff:* Re: org2org

This message was sent from outside of HENSOLDT. Please do not click on links or open attachments unless you validate the source of this email and know the content is safe.

Hi,

Does the SQL part work with a tool like pgAdmin? Notice that the inner double quotes must be escaped as \” in the ogr2ogr command or otherwise they will truncate the -sql parameter. And it seems that you did not select the geometry field. Generally I would suggest to start with a simple SQL and add complexity once you have gotten a good result. Suggestion includes testing with easy table names first before forwarding to names like countries.geometries_boundary_buffer_10km('and').

-Jukka Rahkonen-

*Lähettäjä:*gdal-dev <gdal-dev-boun...@lists.osgeo.org> *Puolesta *Leber, Thorsten
*Lähetetty:* keskiviikko 9. marraskuuta 2022 13.02
*Vastaanottaja:* gdal-dev@lists.osgeo.org
*Aihe:* [gdal-dev] org2org

Hi All,

I am trying to use org2org with the following command:

ogr2ogr -f "ESRI Shapefile" C:\RenderTest\raster_clipper_and.shp PG:"host=10.49.20.42 port=5432 user=tilemill password=test dbname=nextgen" -sql "SELECT "name", "left", top, "right", bottom FROM grids.grid_1_25grad WHERE ST_Intersects(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and'))) AND NOT ST_Touches(geom, (SELECT geom FROM countries.geometries_boundary_buffer_10km('and')))" -s_srs EPSG:4326 -t_srs EPSG:4326 -overwrite -lco ENCODING=utf8

I expect in the output folder 5 files

But I receive a warning:

Warning 1: layer names ignored in combination with -sql.

And get only 3 files

I am missing the .shp and the .shx file. Is there something wrong in my command?

KR

Thorsten


_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to