<div dir="ltr">Hi,<div><br></div><div>You could use st_dumppoints directly to dump polygons points, then by joining on itself, generate the segments, using the dump.path column to keep a segment id for each polygon.</div><div>(to adapt in case of multipg):</div><div><br></div><div><div><font face="monospace, monospace">with tmp as (</font></div><div><font face="monospace, monospace">  select 1::int as id, 'POLYGON((0 0, 1 0, 1 1, 0 0))'::geometry(polygon) as geom</font></div><div><font face="monospace, monospace">), tmp1 as (</font></div><div><font face="monospace, monospace">    SELECT id, st_dumppoints(geom) as d</font></div><div><font face="monospace, monospace">    FROM tmp</font></div><div><font face="monospace, monospace">), tmp2 as (</font></div><div><font face="monospace, monospace">  select <a href="http://t1.id">t1.id</a>, (t1.d).path[2] as segid, (t1.d).path,</font></div><div><font face="monospace, monospace">    st_makeline((t1.d).geom, (t2.d).geom) as seg</font></div><div><font face="monospace, monospace">  from tmp1 t1 join tmp1 t2 on <a href="http://t1.id">t1.id</a> = <a href="http://t2.id">t2.id</a> and (t2.d).path[2] = (t1.d).path[2] + 1</font></div><div><font face="monospace, monospace">) SELECT *</font></div><div><font face="monospace, monospace">  FROM tmp2;</font></div></div><div><br></div><div>Nicolas</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 21 April 2017 at 15:59, Basques, Bob (CI-StPaul) <span dir="ltr"><<a href="mailto:bob.basques@ci.stpaul.mn.us" target="_blank">bob.basques@ci.stpaul.mn.us</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word">
All,
<div><br>
</div>
<div>This is probably a generic postgres question, but . . 
<div><br>
</div>
<div>I’m trying to generate a line segment data table from a (parcel) polygon dataset.  I need to bind the polygon (ParcelId) to each segment as well as maintain the sequence of the line strings that make up the source polygon, so I need to add in
 a index series on the fly to the output of each segment.  I have the segment output working, based on pulling bits from the internet together, although I think I may be going at this backwards, maybe I should be select and adding index on a parcel by parcel
 basis instead of selecting them all at once at the bottom . . . I’ve tried various permutations in the first sub select of
<font face="Courier">row_number() over</font>, and <font face="Courier">
generate_series</font>, but I’m missing something . . . I’m sure there is more than one way to do this too.</div>
<div><br>
</div>
<div>
<div><font face="Courier">select </font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>—- seq,</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>parcelid, </font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>ST_AsText(ST_MakeLine(sp,ep) )</font></div>
<div><font face="Courier">from (</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>select</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>parcelid,</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp,</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>ST_PointN(geom, generate_series(2, ST_NPoints(geom)  )) as ep</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>from (</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>select </font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>parcelid,</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>ST_AsText(ST_Boundary( (ST_Dump(wkb_geometry)).geom )) as geom</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>from </font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>cache.rc_parcel_poly </font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>where </font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>objectid IN (46813, 46814, 46815)</font></div>
<div><font face="Courier"><span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"></span>) as linestrings</font></div>
<div><font face="Courier">) AS segments</font></div>
<div><br>
</div>
<div>This is the output:</div>
<div><br>
</div>
<div><br>
</div>
<div><font face="Courier">parceled,<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>st_astext</font></div>
<div>
<div><font face="Courier">“252923130050";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569983.06682238 166280.506289959,569982.<wbr>969482869 166321.960092038)"</font></div>
<div><font face="Courier">“252923130050";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569982.969482869 166321.960092038,570115.<wbr>252698928 166324.171799228)"</font></div>
<div><font face="Courier">“252923130050";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(570115.252698928 166324.171799228,570115.<wbr>328402415 166282.171405315)"</font></div>
<div><font face="Courier">“252923130050";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(570115.328402415 166282.171405315,569991.<wbr>947482795 166280.591207951)"</font></div>
<div><font face="Courier">“252923130050";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569991.947482795 166280.591207951,569983.<wbr>06682238 166280.506289959)"</font></div>
<div><font face="Courier">“252923130193";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569322.752598196 166436.412697807,569190.<wbr>786695376 166434.788415357)"</font></div>
<div><font face="Courier">“252923130193";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569190.786695376 166434.788415357,569190.<wbr>670520335 166477.753622204)"</font></div>
<div><font face="Courier">“252923130193";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569190.670520335 166477.753622204,569322.<wbr>618897527 166479.994418308)"</font></div>
<div><font face="Courier">“252923130193";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569322.618897527 166479.994418308,569322.<wbr>752598196 166436.412697807)"</font></div>
<div><font face="Courier">“252923130047";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(570115.1013823 166408.172812894,569982.<wbr>770015925 166406.868192479)"</font></div>
<div><font face="Courier">“252923130047";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569982.770015925 166406.868192479,569982.<wbr>672586083 166448.324117512)"</font></div>
<div><font face="Courier">“252923130047";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(569982.672586083 166448.324117512,570115.<wbr>025814325 166450.173206791)"</font></div>
<div><font face="Courier">“252923130047";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>"LINESTRING(570115.025814325 166450.173206791,570115.<wbr>1013823 166408.172812894)"</font></div>
</div>
<div><br>
</div>
<div>
<div style="color:rgb(0,0,0);font-family:'Comic Sans MS';font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
I’m trying to get to this output:</div>
<div style="color:rgb(0,0,0);font-family:'Comic Sans MS';font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<br>
</div>
<div style="font-variant-ligatures:normal;font-variant-east-asian:normal;text-align:start;text-indent:0px">
<div style="font-variant-ligatures:normal;font-variant-east-asian:normal">
<div><font face="Courier">seq,<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>parceled,<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>st_astext</font></div>
<div>
<div><font face="Courier">1<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130050”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(569983.06682238 166280.506289959,569982.<wbr>969482869 166321.960092038)"</font></div>
<div><font face="Courier">2<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130050";<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(569982.969482869 166321.960092038,570115.<wbr>252698928 166324.171799228)"</font></div>
<div><font face="Courier">3<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130050”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(570115.252698928 166324.171799228,570115.<wbr>328402415 166282.171405315)"</font></div>
<div><font face="Courier">4<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130050”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(570115.328402415 166282.171405315,569991.<wbr>947482795 166280.591207951)"</font></div>
<div><font face="Courier">5<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130050”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
“LINESTRING(569991.947482795 166280.591207951,569983.<wbr>06682238 166280.506289959)"</font></div>
<div><font face="Courier"><br>
</font></div>
<div><font face="Courier">1<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130193”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(569322.752598196 166436.412697807,569190.<wbr>786695376 166434.788415357)"</font></div>
<div><font face="Courier">2<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130193”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(569190.786695376 166434.788415357,569190.<wbr>670520335 166477.753622204)"</font></div>
<div><font face="Courier">3<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130193”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(569190.670520335 166477.753622204,569322.<wbr>618897527 166479.994418308)"</font></div>
<div><font face="Courier">4<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130193”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
“LINESTRING(569322.618897527 166479.994418308,569322.<wbr>752598196 166436.412697807)"</font></div>
<div><font face="Courier"><br>
</font></div>
<div><font face="Courier">1<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130047”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(570115.1013823 166408.172812894,569982.<wbr>770015925 166406.868192479)"</font></div>
<div><font face="Courier">2<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130047”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(569982.770015925 166406.868192479,569982.<wbr>672586083 166448.324117512)"</font></div>
<div><font face="Courier">3<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130047”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
"LINESTRING(569982.672586083 166448.324117512,570115.<wbr>025814325 166450.173206791)"</font></div>
<div><font face="Courier">4<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap">
</span>“252923130047”;<span class="m_-8052612792053816388Apple-tab-span" style="white-space:pre-wrap"> </span>
“LINESTRING(570115.025814325 166450.173206791,570115.<wbr>1013823 166408.172812894)"</font></div>
</div>
<div><font face="Courier"><br>
</font></div>
<div>Any help, pointers, appreciated  . . .</div>
<div><br>
</div>
<div>bobb</div>
<div><font face="Courier"><br>
</font></div>
<div><font face="Courier"><br>
</font></div>
</div>
<div style="color:rgb(0,0,0);font-family:'Comic Sans MS';font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px">
<br>
</div>
<br>
</div>
<div style="color:rgb(0,0,0);font-family:'Comic Sans MS';font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<div class="m_-8052612792053816388wp_quotepage_quote">An inventor is simply a fellow who doesn’t take his education too seriously.</div>
<div class="m_-8052612792053816388wp_quotepage_author">—Charles F. Kettering</div>
</div>
</div>
<br>
</div>
</div>
</div>

<br>______________________________<wbr>_________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/postgis-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/postgis-users</a><br></blockquote></div><br></div>