[postgis-users] Topology & Attributes

Ofer Zilberstein zilberstein.ofer at gmail.com
Tue Feb 10 09:55:47 PST 2015


Hi Nicolas,

Thanks for the detailed description that make the unclear clear...

Now I feel ready to implement ...

Your support is a great example for the strength of the open source
community ...

BR.

Ofer

On Tue, Feb 10, 2015 at 11:07 AM, Nicolas Ribot <nicolas.ribot at gmail.com>
wrote:

> Hi Ofer,
>
> Some precisions regarding the query I sent:
>
> A topoGeometry objects stores the following information (
> http://postgis.net/docs/manual-2.1/topogeometry.html):
>
> • topopology_id: id of the topology, as stored in the Topology metadata
> • layer_id : the id of the layer in the topology
> • id: the id of the topogeometry object
> • type: the geometry type (point, line...)
>
> When joining between the Polygon table containing the TopoGeometryObject,
> I used a notation seen on this list to compare 2 values:
> (a, b) = (c, d), equivalent to a = b and c = d.
> The "1" in the first part (pe.parcelle p1 on (1, (p1.topo).id)) is the
> hard-coded (not very smart: I copied a test query I used) identifier of the
> Topology layer in the topology.layer metadata table.
>
> I obtained this value by running:
> select layer_id from topology.layer where schema_name = 'pe' and
> table_name = 'parcelle;
>
> So, in your case, check the layer_id of the department table and use this
> value.
>
> Nicolas
>
>
> On 9 February 2015 at 21:18, Ofer Zilberstein <zilberstein.ofer at gmail.com>
> wrote:
>
>> Hi,
>>
>> 1. I advanced ...and I used the  topology.toTopoGeom() and now
>> the relation is populated.
>>
>> 2. I try to understand the following join
>>
>> *pe.parcelle** p1 on (1, (p1.topo).id) *= (r1.layer_id, r1.topogeo_id)
>>
>> the second part of the join is clear -- comes from the relation table
>> however the first part - is not so clear
>>
>> according to you - "parcelle is the polygon table with a topo column
>> containing the TopoGeometry object corresponding to the polygon" (you have
>> used here pe.parcelle - is it the table name ? )
>>
>> so if in my case I have table 'department' with column 'topogeom' it
>> would look like
>>
>> department d1 on (1,(d1.topogeom).id) = (r1.layer_id, r1.topogeo_id) ?
>>
>>
>> Ofer
>>
>>
>>
>>
>>
>> On Mon, Feb 9, 2015 at 3:52 PM, Ofer Zilberstein <
>> zilberstein.ofer at gmail.com> wrote:
>>
>>> Hi Nicolas,
>>>
>>> 1. I used  ST_CreateTopoGeo()  to build the topology (not the topology.toTopoGeom()
>>> as you mentioned )
>>>
>>> When I look at the relation table its empty ? should I use  topology.toTopoGeom()
>>> instead, and it will populate it ?
>>>
>>> 2. can you explain what the parentheses (special the 1, ...) part mean...
>>>
>>> join pe.parcelle p1 on *(1, (p1.topo).id)* = (r1.layer_id,
>>> r1.topogeo_id)
>>>
>>> Thanks in advanced ...
>>>
>>> Ofer
>>>
>>> On Mon, Feb 9, 2015 at 11:05 AM, Nicolas Ribot <nicolas.ribot at gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> As usual with SQL, there must be several other ways to perform the same
>>>> query.
>>>>
>>>> As the edge view stores 2 faces id per row (left and right), I
>>>> duplicated the joins to join both left_face and right face against the
>>>> original polygon table (p1 and p2 aliases)
>>>>
>>>> Nicolas
>>>>
>>>> On 8 February 2015 at 21:57, Ofer Zilberstein <
>>>> zilberstein.ofer at gmail.com> wrote:
>>>>
>>>>> Much Thanks,
>>>>>
>>>>> First I will try to understand the join that you did and then try to
>>>>> implement it...
>>>>>
>>>>> Ofer
>>>>>
>>>>> On Sun, Feb 8, 2015 at 12:44 PM, Nicolas Ribot <
>>>>> nicolas.ribot at gmail.com> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> When you build the topology, for instance with topology.toTopoGeom(),
>>>>>> you get back a TopoGeometry object for each polygon added to the topology.
>>>>>> This TopoGeometry is used to keep a link between your polygon object
>>>>>> and all the topological elements composing it.
>>>>>> The "relation" table inside the topo schema holding the topology
>>>>>> contains the identifier of the topoGeometry object and the identifiers of
>>>>>> topo elements composing the polygon.
>>>>>>
>>>>>> To get the right and left original polygons from the topology, you
>>>>>> make a join between edge, relation and pg table:
>>>>>> (topo_grass is the topo schema, parcelle is the polygon table with a
>>>>>> topo column containing the TopoGeometry object corresponding to the
>>>>>> polygon):
>>>>>>
>>>>>> select e.edge_id, e.left_face, e.right_face,
>>>>>>   p1.id as left_id, p2.id as right_id
>>>>>> from topo_grass.edge e
>>>>>>   join topo_grass.relation r1 on r1.element_id = e.left_face
>>>>>>   join pe.parcelle p1 on (1, (p1.topo).id) = (r1.layer_id, r1.topogeo_id)
>>>>>>   join topo_grass.relation r2 on r2.element_id = e.right_face
>>>>>>   join pe.parcelle p2 on (1, (p2.topo).id) = (r2.layer_id, r2.topogeo_id);
>>>>>>
>>>>>> Nicolas
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 8 February 2015 at 10:29, Ofer Zilberstein <
>>>>>> zilberstein.ofer at gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> When you build topology from set of connected polygons, the original
>>>>>>> polygon attributes are not part of the topology model. The model creates
>>>>>>> MBR face for each original polygon.
>>>>>>>
>>>>>>> The edges hold the left & right faces.
>>>>>>>
>>>>>>> How or what is the right way to add to the edges the right and left
>>>>>>> original polygons ?
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> *Ofer Zilberstein*
>>>>>>>
>>>>>>>     Mobile: 972-544886873
>>>>>>>
>>>>>>>     Skype: ofer.zilberstein
>>>>>>>
>>>>>>>     Mail: zilberstein.ofer at gmail.com
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> postgis-users mailing list
>>>>>>> postgis-users at lists.osgeo.org
>>>>>>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> postgis-users mailing list
>>>>>> postgis-users at lists.osgeo.org
>>>>>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> *Ofer Zilberstein*
>>>>>
>>>>>     Mobile: 972-544886873
>>>>>
>>>>>     Skype: ofer.zilberstein
>>>>>
>>>>>     Mail: zilberstein.ofer at gmail.com
>>>>>
>>>>> _______________________________________________
>>>>> postgis-users mailing list
>>>>> postgis-users at lists.osgeo.org
>>>>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> postgis-users mailing list
>>>> postgis-users at lists.osgeo.org
>>>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> *Ofer Zilberstein*
>>>
>>>     Mobile: 972-544886873
>>>
>>>     Skype: ofer.zilberstein
>>>
>>>     Mail: zilberstein.ofer at gmail.com
>>>
>>
>>
>>
>> --
>>
>> *Ofer Zilberstein*
>>
>>     Mobile: 972-544886873
>>
>>     Skype: ofer.zilberstein
>>
>>     Mail: zilberstein.ofer at gmail.com
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org
>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>



-- 

*Ofer Zilberstein*

    Mobile: 972-544886873

    Skype: ofer.zilberstein

    Mail: zilberstein.ofer at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20150210/52dbfb84/attachment.html>


More information about the postgis-users mailing list