[postgis-users] First attempt to use raster - need help

Stephen Woodbridge woodbri at swoodbridge.com
Sat Jan 13 09:13:15 PST 2018


Hi all,

Sorry, if you get this twice, I sent this to the gdal list by mistake.

I'm trying to use the raster functions for the first time. I have a 
simple black and white image with some polygons drawn on it. and I want 
to extract the polygons as geometry.

$ gdalinfo -hist 12322240_lines.png
Driver: PNG/Portable Network Graphics
Files: 12322240_lines.png
        12322240_lines.png.aux.xml
Size is 600, 800
Coordinate System is `'
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,  800.0)
Upper Right (  600.0,    0.0)
Lower Right (  600.0,  800.0)
Center      (  300.0,  400.0)
Band 1 Block=600x1 Type=Byte, ColorInterp=Gray
   256 buckets from -0.5 to 255.5:
   474137 5863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0
   Image Structure Metadata:
     NBITS=1

the background is the 474137bucket and the line work is the 5863 bucket.

$ raster2pgsql -t auto -P -c -f img -F -n file -I -M *.png | 
/usr/lib/postgresql/9.5/bin/psql -U postgres -h localhost -p 5435 
test_sketch

I'm loading 2 PNG images in this example, about ultimately I will have 
100-1000s of images to process and extract the line work.

SELECT (md).*, (bmd).*
  FROM (SELECT ST_Metadata(img) AS md,
               ST_BandMetadata(img) AS bmd
        FROM "12322240_lines" LIMIT 1
       ) foo;

-- 0;0;30;32;1;-1;0;0;0;1;"8BUI";;f;""

select rid, val, st_astext(geom) as wkt
from (
select rid, dp.*
from "12322240_lines", lateral st_dumpaspolygons(img, 1, true) as dp
) as foo;

This generates 1349 rows. So it appears to be processing these an a tile 
by tile basis not on the whole image. How do I get the polygons that are 
represented by the sketch. Assuming that the sketch lines are 1 or 2 
pixels wide, I presume that I would get the polygon around those pixels. 
Do I need to then skeletonize that to get the original lines?

select * from "12322240_lines";

generates 100 rows.


Any thoughts on how to best approach this would be appreciated.

Thanks,

   -Steve


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



More information about the postgis-users mailing list