Re: [postgis-users] Reference vrt datasets in postgis raster
Hi All, with regard to the problem of referencing vrt raster of hdf-containers as out-of-db-rasters in postgis (see thread), I found the solution: the error message in postgresql was: ERROR 4: `HDF4_EOS:EOS_GRID:MOD13A1. A2012065.h35v10.005.2012082112322.hdf:MODIS_Grid_16DAY_500m_VI:500m 16 days EVI' does not exist in the file system, and is not recognised as a supported dataset name. The correct referencing in the vrt file is: a) relativeToVRT has to be set to zero: relativeToVRT=0 b) the full path has to be inserted like this: HDF4_EOS:EOS_GRID:/some/path/toraster/MOD13A1. A2012065.h35v10.005.2012082112322.hdf:MODIS_Grid_16DAY_500m_VI:500m 16 days EVI' I don't know itf the latter can be done with a gdal_translate switch, I used sed for in-file replacement. So up for some speed tests.. :-) Greetings Chris On Sun, Jul 20, 2014 at 8:41 PM, Christian Yrrman yrr...@gmail.com wrote: Hello David, hi all, thanks for the hint with SRID6842 for MODIS tiles and sorry for the late reply! In the meantime I have made several tests still trying to reference *vrt-files as out-of-database-references in postgis - with no luck. If I find something useful I'll post it to the group. Thanks and greetings! Chris On Mon, Jul 14, 2014 at 5:02 PM, David Haynes hayne...@gmail.com wrote: Hello, You might want to try this projection: http://spatialreference.org/ref/sr-org/6842/postgis/ This the most accurate projections, despite the description on the spatial reference site. I am doing related work and found this calculator at the following url http://landweb.nascom.nasa.gov/cgi-bin/developer/tilemap.cgi There is no projection accuracy error when using SRID 6842. On Fri, Jul 11, 2014 at 9:33 AM, Christian Yrrman yrr...@gmail.com wrote: Hi All, I'm a newbie to this group, so hello everyone and thanks in advance for letting me participate :-) After several tests and searching on the net I'm a little stuck with the following problem: I have downloaded a bunch of MODIS tiles (MOD13A1) from [0] that I want to (only) reference in a postgis raster database. These tiles come in hdf containers with several layers in it . - For a start, I'm only interested in the EVI layer, so I created EVI vrt files with command [1] - This gives me several EVI*.vrt files referencing EVI with the original sinusoidal projection. According to spatialreference.org, the closest SRS match is sr-org6974 [2]. - As this is not in postgis, I've imported this into spatial_ref_sys [3] - Next, I'm using the following command to insert the data into raster table modistest with the following command: for i in `find / -name EVI_origSRS*.vrt`; do raster2pgsql -s 96974 -R -F -f rast -a $i modistest; done where: -s 96974 - use the freshly imported MODIS SRS from [2] -R Register the raster as an out-of-db (filesystem) raster. Provided raster should have absolute path to the file -F Add a column with the filename of the raster. -f column Specify the name of the raster column -a Appends raster into current table, must be exactly the same table schema. I've built the index on rast in a separate step (not using switch -I) This populates table modistest (using | psql...), so it looks fine. However when I want to retrieve data from the raster, e.g. via SELECT ST_AsTiff(rast) from public.modistest where id=1158; I get an error message like this ERROR: rt_raster_from_gdal_dataset: Unable to get data from transformed raster CONTEXT: PL/pgSQL function st_astiff line 20 at RETURN and in the postgresql log I get ERROR 4: `HDF4_EOS:EOS_GRID:MOD13A1.A2012065.h35v10.005.2012082112322.hdf:MODIS_Grid_16DAY_500m_VI:500m 16 days EVI' does not exist in the file system, and is not recognised as a supported dataset name. So it looks like the layers were not correctly referenced - however I cannot see a mistake. I'm actually using find / -name EVI_origSRS*.vrt to get the full path for the loop (not for i in *vrt) Any help/advice is highly appreciated! In a next step, I would even like to transform the sinusoidal tile afterwards with ST_transform to epsg:4326. That would be fantastic, I'd have all tiles in original format in the file system and let postgis do all the rest.. :-) Thanks in advance and greetings! Chris [0] MODIS download website http://e4ftl01.cr.usgs.gov/MOLT/MOD13A1.005/ [1] command to create vrt files: #!/bin/bash for i in *hdf; do echo Processing $i j=`gdalinfo $i| grep SUBDATASET_2_NAME | cut -d '=' -f 2` echo Extracted $j gdal_translate -of VRT $j EVI_origSRS_$i.vrt done [2] SRS projeciton for MODIS http://spatialreference.org/ref/sr-org/6974/ [3] SQL command to insert MODIS SRS INSERT into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext) values ( 96974, 'sr-org', 6974, '+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
Re: [postgis-users] Reference vrt datasets in postgis raster
Hello, You might want to try this projection: http://spatialreference.org/ref/sr-org/6842/postgis/ This the most accurate projections, despite the description on the spatial reference site. I am doing related work and found this calculator at the following url http://landweb.nascom.nasa.gov/cgi-bin/developer/tilemap.cgi There is no projection accuracy error when using SRID 6842. On Fri, Jul 11, 2014 at 9:33 AM, Christian Yrrman yrr...@gmail.com wrote: Hi All, I'm a newbie to this group, so hello everyone and thanks in advance for letting me participate :-) After several tests and searching on the net I'm a little stuck with the following problem: I have downloaded a bunch of MODIS tiles (MOD13A1) from [0] that I want to (only) reference in a postgis raster database. These tiles come in hdf containers with several layers in it . - For a start, I'm only interested in the EVI layer, so I created EVI vrt files with command [1] - This gives me several EVI*.vrt files referencing EVI with the original sinusoidal projection. According to spatialreference.org, the closest SRS match is sr-org6974 [2]. - As this is not in postgis, I've imported this into spatial_ref_sys [3] - Next, I'm using the following command to insert the data into raster table modistest with the following command: for i in `find / -name EVI_origSRS*.vrt`; do raster2pgsql -s 96974 -R -F -f rast -a $i modistest; done where: -s 96974 - use the freshly imported MODIS SRS from [2] -R Register the raster as an out-of-db (filesystem) raster. Provided raster should have absolute path to the file -F Add a column with the filename of the raster. -f column Specify the name of the raster column -a Appends raster into current table, must be exactly the same table schema. I've built the index on rast in a separate step (not using switch -I) This populates table modistest (using | psql...), so it looks fine. However when I want to retrieve data from the raster, e.g. via SELECT ST_AsTiff(rast) from public.modistest where id=1158; I get an error message like this ERROR: rt_raster_from_gdal_dataset: Unable to get data from transformed raster CONTEXT: PL/pgSQL function st_astiff line 20 at RETURN and in the postgresql log I get ERROR 4: `HDF4_EOS:EOS_GRID:MOD13A1.A2012065.h35v10.005.2012082112322.hdf:MODIS_Grid_16DAY_500m_VI:500m 16 days EVI' does not exist in the file system, and is not recognised as a supported dataset name. So it looks like the layers were not correctly referenced - however I cannot see a mistake. I'm actually using find / -name EVI_origSRS*.vrt to get the full path for the loop (not for i in *vrt) Any help/advice is highly appreciated! In a next step, I would even like to transform the sinusoidal tile afterwards with ST_transform to epsg:4326. That would be fantastic, I'd have all tiles in original format in the file system and let postgis do all the rest.. :-) Thanks in advance and greetings! Chris [0] MODIS download website http://e4ftl01.cr.usgs.gov/MOLT/MOD13A1.005/ [1] command to create vrt files: #!/bin/bash for i in *hdf; do echo Processing $i j=`gdalinfo $i| grep SUBDATASET_2_NAME | cut -d '=' -f 2` echo Extracted $j gdal_translate -of VRT $j EVI_origSRS_$i.vrt done [2] SRS projeciton for MODIS http://spatialreference.org/ref/sr-org/6974/ [3] SQL command to insert MODIS SRS INSERT into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext) values ( 96974, 'sr-org', 6974, '+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ', 'PROJCS[MODIS Sinusoidal, GEOGCS[WGS 84,DATUM[WGS_1984,SPHEROID[WGS 84,6378137,298.257223563,AUTHORITY[EPSG,7030]], AUTHORITY[EPSG,6326]],PRIMEM[Greenwich,0,AUTHORITY[EPSG,8901]], UNIT[degree,0.01745329251994328,AUTHORITY[EPSG,9122]],AUTHORITY[EPSG,4326]], PROJECTION[Sinusoidal], PARAMETER[false_easting,0.0], PARAMETER[false_northing,0.0], PARAMETER[central_meridian,0.0], PARAMETER[semi_major,6371007.181], PARAMETER[semi_minor,6371007.181], UNIT[m,1.0],AUTHORITY[SR-ORG,6974]]'); ___ postgis-users mailing list postgis-users@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users ___ postgis-users mailing list postgis-users@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
[postgis-users] Reference vrt datasets in postgis raster
Hi All, I'm a newbie to this group, so hello everyone and thanks in advance for letting me participate :-) After several tests and searching on the net I'm a little stuck with the following problem: I have downloaded a bunch of MODIS tiles (MOD13A1) from [0] that I want to (only) reference in a postgis raster database. These tiles come in hdf containers with several layers in it . - For a start, I'm only interested in the EVI layer, so I created EVI vrt files with command [1] - This gives me several EVI*.vrt files referencing EVI with the original sinusoidal projection. According to spatialreference.org, the closest SRS match is sr-org6974 [2]. - As this is not in postgis, I've imported this into spatial_ref_sys [3] - Next, I'm using the following command to insert the data into raster table modistest with the following command: for i in `find / -name EVI_origSRS*.vrt`; do raster2pgsql -s 96974 -R -F -f rast -a $i modistest; done where: -s 96974 - use the freshly imported MODIS SRS from [2] -R Register the raster as an out-of-db (filesystem) raster. Provided raster should have absolute path to the file -F Add a column with the filename of the raster. -f column Specify the name of the raster column -a Appends raster into current table, must be exactly the same table schema. I've built the index on rast in a separate step (not using switch -I) This populates table modistest (using | psql...), so it looks fine. However when I want to retrieve data from the raster, e.g. via SELECT ST_AsTiff(rast) from public.modistest where id=1158; I get an error message like this ERROR: rt_raster_from_gdal_dataset: Unable to get data from transformed raster CONTEXT: PL/pgSQL function st_astiff line 20 at RETURN and in the postgresql log I get ERROR 4: `HDF4_EOS:EOS_GRID:MOD13A1.A2012065.h35v10.005.2012082112322.hdf:MODIS_Grid_16DAY_500m_VI:500m 16 days EVI' does not exist in the file system, and is not recognised as a supported dataset name. So it looks like the layers were not correctly referenced - however I cannot see a mistake. I'm actually using find / -name EVI_origSRS*.vrt to get the full path for the loop (not for i in *vrt) Any help/advice is highly appreciated! In a next step, I would even like to transform the sinusoidal tile afterwards with ST_transform to epsg:4326. That would be fantastic, I'd have all tiles in original format in the file system and let postgis do all the rest.. :-) Thanks in advance and greetings! Chris [0] MODIS download website http://e4ftl01.cr.usgs.gov/MOLT/MOD13A1.005/ [1] command to create vrt files: #!/bin/bash for i in *hdf; do echo Processing $i j=`gdalinfo $i| grep SUBDATASET_2_NAME | cut -d '=' -f 2` echo Extracted $j gdal_translate -of VRT $j EVI_origSRS_$i.vrt done [2] SRS projeciton for MODIS http://spatialreference.org/ref/sr-org/6974/ [3] SQL command to insert MODIS SRS INSERT into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext) values ( 96974, 'sr-org', 6974, '+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ', 'PROJCS[MODIS Sinusoidal, GEOGCS[WGS 84,DATUM[WGS_1984,SPHEROID[WGS 84,6378137,298.257223563,AUTHORITY[EPSG,7030]], AUTHORITY[EPSG,6326]],PRIMEM[Greenwich,0,AUTHORITY[EPSG,8901]], UNIT[degree,0.01745329251994328,AUTHORITY[EPSG,9122]],AUTHORITY[EPSG,4326]], PROJECTION[Sinusoidal], PARAMETER[false_easting,0.0], PARAMETER[false_northing,0.0], PARAMETER[central_meridian,0.0], PARAMETER[semi_major,6371007.181], PARAMETER[semi_minor,6371007.181], UNIT[m,1.0],AUTHORITY[SR-ORG,6974]]'); ___ postgis-users mailing list postgis-users@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users