[GRASS-user] v.net.iso - service area

------------------------------

Message: 3
Date: Sat, 03 Apr 2010 23:11:26 +0200
From: "Johannes Sommer" <Johann.online@gmx.de>
Subject: [GRASS-user] v.net.iso - service area
To: grass-user@lists.osgeo.org
Message-ID: <20100403211126.313360@gmx.net>
Content-Type: text/plain; charset="iso-8859-1"

Hi list,

recently I played around with the network functionality in ArcGIS. I generated so called "Service Areas" in a network dataset which return the regions that can be accessed in a network dataset based on several distances (in my example 150, 400 meters).

I wanted to reproduce the results with GRASS GIS and after a short search I found the module v.net.iso which seemed to fit my needs. It returns exactly the same results as ArcGIS did on isolines on a network, but I can't find any solution concerning the service areas.

Can anyone point me in the right direction to calculate zones (that is "build polygons from the end points of each network segment") from these generated isolines in a network?

Regards,

Johannes

Johannes,

I don't think there's anything to do this automatically in Grass-GIS. But I think you should be able to construct a script that would connect pairs of points.

So if you can extract each end point of the network segment, you would end up with a vector containing only points - then create a temporary map of a point pair, run (say) v.distance output=connectors on each point pair, patch the resulting maps together ...

It sounds a bit labourious, and probably someone else can think of something easier, but if you get all the individual steps right, a script is then easy to create.

(Actually, Johannes, I think the idea is brilliant. I've done lots of network service area work, and it never occurred to me before!)

Richard Chirgwin

If I understand you correctly, v.hull might help to create the service
area polygon from the points....

http://grass.itc.it/grass62/manuals/html62_user/v.hull.html

On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
<rchirgwin@ozemail.com.au> wrote:

------------------------------

Message: 3
Date: Sat, 03 Apr 2010 23:11:26 +0200
From: "Johannes Sommer" <Johann.online@gmx.de>
Subject: [GRASS-user] v.net.iso - service area
To: grass-user@lists.osgeo.org
Message-ID: <20100403211126.313360@gmx.net>
Content-Type: text/plain; charset="iso-8859-1"

Hi list,

recently I played around with the network functionality in ArcGIS. I
generated so called "Service Areas" in a network dataset which return the
regions that can be accessed in a network dataset based on several distances
(in my example 150, 400 meters).

I wanted to reproduce the results with GRASS GIS and after a short search
I found the module v.net.iso which seemed to fit my needs. It returns
exactly the same results as ArcGIS did on isolines on a network, but I can't
find any solution concerning the service areas.

Can anyone point me in the right direction to calculate zones (that is
"build polygons from the end points of each network segment") from these
generated isolines in a network?

Regards,

Johannes

Johannes,

I don't think there's anything to do this automatically in Grass-GIS. But I
think you should be able to construct a script that would connect pairs of
points.

So if you can extract each end point of the network segment, you would end
up with a vector containing only points - then create a temporary map of a
point pair, run (say) v.distance output=connectors on each point pair, patch
the resulting maps together ...

It sounds a bit labourious, and probably someone else can think of something
easier, but if you get all the individual steps right, a script is then easy
to create.

(Actually, Johannes, I think the idea is brilliant. I've done lots of
network service area work, and it never occurred to me before!)

Richard Chirgwin

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

I went through this last year, and as I remember, v.hull doesn't quite
get you there, since the resultant polygon can't "dip in" to reach
concave sections of a service area. I used v.delaunay to create a
network of the nodes that made up the connections between service areas,
and v.net.salesman to generate the edges of the service areas.

David

On Mon, 2010-04-05 at 09:04 -0300, Daniel Victoria wrote:

If I understand you correctly, v.hull might help to create the service
area polygon from the points....

http://grass.itc.it/grass62/manuals/html62_user/v.hull.html

On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
<rchirgwin@ozemail.com.au> wrote:
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Sat, 03 Apr 2010 23:11:26 +0200
>> From: "Johannes Sommer" <Johann.online@gmx.de>
>> Subject: [GRASS-user] v.net.iso - service area
>> To: grass-user@lists.osgeo.org
>> Message-ID: <20100403211126.313360@gmx.net>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Hi list,
>>
>> recently I played around with the network functionality in ArcGIS. I
>> generated so called "Service Areas" in a network dataset which return the
>> regions that can be accessed in a network dataset based on several distances
>> (in my example 150, 400 meters).
>>
>> I wanted to reproduce the results with GRASS GIS and after a short search
>> I found the module v.net.iso which seemed to fit my needs. It returns
>> exactly the same results as ArcGIS did on isolines on a network, but I can't
>> find any solution concerning the service areas.
>>
>> Can anyone point me in the right direction to calculate zones (that is
>> "build polygons from the end points of each network segment") from these
>> generated isolines in a network?
>>
>> Regards,
>>
>> Johannes
>>
>>
>>
>
> Johannes,
>
> I don't think there's anything to do this automatically in Grass-GIS. But I
> think you should be able to construct a script that would connect pairs of
> points.
>
> So if you can extract each end point of the network segment, you would end
> up with a vector containing only points - then create a temporary map of a
> point pair, run (say) v.distance output=connectors on each point pair, patch
> the resulting maps together ...
>
> It sounds a bit labourious, and probably someone else can think of something
> easier, but if you get all the individual steps right, a script is then easy
> to create.
>
> (Actually, Johannes, I think the idea is brilliant. I've done lots of
> network service area work, and it never occurred to me before!)
>
> Richard Chirgwin
>
> _______________________________________________
> grass-user mailing list
> grass-user@lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
>
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

Daniel - Thanks! (Remind myself to re-read the manual for the functions I don't often use!)

Richard

Daniel Victoria wrote:

If I understand you correctly, v.hull might help to create the service
area polygon from the points....

http://grass.itc.it/grass62/manuals/html62_user/v.hull.html

On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
<rchirgwin@ozemail.com.au> wrote:
  

------------------------------

Message: 3
Date: Sat, 03 Apr 2010 23:11:26 +0200
From: "Johannes Sommer" <Johann.online@gmx.de>
Subject: [GRASS-user] v.net.iso - service area
To: grass-user@lists.osgeo.org
Message-ID: <20100403211126.313360@gmx.net>
Content-Type: text/plain; charset="iso-8859-1"

Hi list,

recently I played around with the network functionality in ArcGIS. I
generated so called "Service Areas" in a network dataset which return the
regions that can be accessed in a network dataset based on several distances
(in my example 150, 400 meters).

I wanted to reproduce the results with GRASS GIS and after a short search
I found the module v.net.iso which seemed to fit my needs. It returns
exactly the same results as ArcGIS did on isolines on a network, but I can't
find any solution concerning the service areas.

Can anyone point me in the right direction to calculate zones (that is
"build polygons from the end points of each network segment") from these
generated isolines in a network?

Regards,

Johannes

Johannes,

I don't think there's anything to do this automatically in Grass-GIS. But I
think you should be able to construct a script that would connect pairs of
points.

So if you can extract each end point of the network segment, you would end
up with a vector containing only points - then create a temporary map of a
point pair, run (say) v.distance output=connectors on each point pair, patch
the resulting maps together ...

It sounds a bit labourious, and probably someone else can think of something
easier, but if you get all the individual steps right, a script is then easy
to create.

(Actually, Johannes, I think the idea is brilliant. I've done lots of
network service area work, and it never occurred to me before!)

Richard Chirgwin

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

Hi Richard and Daniel,

thanks for your answers. I don't think its as easy as building a convex hull around the endpoints of the networks segments.

Have a look at the picture example of v.hull [1] in the docs. A convex hull only connects the outer points of a point vector and doesn't care about "inner" points.
The service area should be somehow a convex hull including a connection of inner points. Imagine also not only one but more seed points from which the isolines in the network are created.
I think the delaunay triangulation [2] would fit better.
The problem here is that attributes (e.g. cat from v.net.iso) are lost when creating a delaunay triangulation from the endpoints of the network segments.
Thus I tried to intersect the network graph (from v.net.iso) with the triangles to get the values of the categories. But does not work either because the intersection returns to many triangles that only touch the end of the network segments but are not a real part of the service area.

I also tried a raster approach:
- Extract vertices from all lines of the result set from v.net.iso (3 classes)
- Interpolation between these points per Nearest Neighbor
- Conversion to polygons

But that's not really satisfying because it only comes close to the expected result.

I'm still searching to find any appropriate solution.

regards,
Johannes

[1] http://grass.itc.it/grass62/manuals/html62_user/v.hull.html
[2] http://grass.itc.it/grass62/manuals/html62_user/v.voronoi.html

-------- Original-Nachricht --------

Datum: Tue, 06 Apr 2010 07:41:50 +1000
Von: Richard Chirgwin <rchirgwin@ozemail.com.au>
An: Daniel Victoria <daniel.victoria@gmail.com>
CC: grass-user@lists.osgeo.org
Betreff: Re: [GRASS-user] v.net.iso - service area

Daniel - Thanks! (Remind myself to re-read the manual for the functions
I don't often use!)

Richard

Daniel Victoria wrote:
> If I understand you correctly, v.hull might help to create the service
> area polygon from the points....
>
> http://grass.itc.it/grass62/manuals/html62_user/v.hull.html
>
> On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
> <rchirgwin@ozemail.com.au> wrote:
>
>>> ------------------------------
>>>
>>> Message: 3
>>> Date: Sat, 03 Apr 2010 23:11:26 +0200
>>> From: "Johannes Sommer" <Johann.online@gmx.de>
>>> Subject: [GRASS-user] v.net.iso - service area
>>> To: grass-user@lists.osgeo.org
>>> Message-ID: <20100403211126.313360@gmx.net>
>>> Content-Type: text/plain; charset="iso-8859-1"
>>>
>>> Hi list,
>>>
>>> recently I played around with the network functionality in ArcGIS. I
>>> generated so called "Service Areas" in a network dataset which return
the
>>> regions that can be accessed in a network dataset based on several
distances
>>> (in my example 150, 400 meters).
>>>
>>> I wanted to reproduce the results with GRASS GIS and after a short
search
>>> I found the module v.net.iso which seemed to fit my needs. It returns
>>> exactly the same results as ArcGIS did on isolines on a network, but I
can't
>>> find any solution concerning the service areas.
>>>
>>> Can anyone point me in the right direction to calculate zones (that is
>>> "build polygons from the end points of each network segment") from
these
>>> generated isolines in a network?
>>>
>>> Regards,
>>>
>>> Johannes
>>>
>>>
>>>
>>>
>> Johannes,
>>
>> I don't think there's anything to do this automatically in Grass-GIS.
But I
>> think you should be able to construct a script that would connect pairs
of
>> points.
>>
>> So if you can extract each end point of the network segment, you would
end
>> up with a vector containing only points - then create a temporary map
of a
>> point pair, run (say) v.distance output=connectors on each point pair,
patch
>> the resulting maps together ...
>>
>> It sounds a bit labourious, and probably someone else can think of
something
>> easier, but if you get all the individual steps right, a script is then
easy
>> to create.
>>
>> (Actually, Johannes, I think the idea is brilliant. I've done lots of
>> network service area work, and it never occurred to me before!)
>>
>> Richard Chirgwin
>>
>> _______________________________________________
>> grass-user mailing list
>> grass-user@lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/grass-user
>>
>>
>
>

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01

David,

thank you very much! I tested your approach with network isolines
derived from a dataset with one center - and it worked very well!
The automated approach will be interesting (also with more than one
center) - but therefore I need more experience in GRASS scripting.

thanks,
Johannes

David Mahoney schrieb:

I went through this last year, and as I remember, v.hull doesn't quite
get you there, since the resultant polygon can't "dip in" to reach
concave sections of a service area. I used v.delaunay to create a
network of the nodes that made up the connections between service areas,
and v.net.salesman to generate the edges of the service areas.

David

On Mon, 2010-04-05 at 09:04 -0300, Daniel Victoria wrote:
  

If I understand you correctly, v.hull might help to create the service
area polygon from the points....

http://grass.itc.it/grass62/manuals/html62_user/v.hull.html

On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
<rchirgwin@ozemail.com.au> wrote:
    

------------------------------

Message: 3
Date: Sat, 03 Apr 2010 23:11:26 +0200
From: "Johannes Sommer" <Johann.online@gmx.de>
Subject: [GRASS-user] v.net.iso - service area
To: grass-user@lists.osgeo.org
Message-ID: <20100403211126.313360@gmx.net>
Content-Type: text/plain; charset="iso-8859-1"

Hi list,

recently I played around with the network functionality in ArcGIS. I
generated so called "Service Areas" in a network dataset which return the
regions that can be accessed in a network dataset based on several distances
(in my example 150, 400 meters).

I wanted to reproduce the results with GRASS GIS and after a short search
I found the module v.net.iso which seemed to fit my needs. It returns
exactly the same results as ArcGIS did on isolines on a network, but I can't
find any solution concerning the service areas.

Can anyone point me in the right direction to calculate zones (that is
"build polygons from the end points of each network segment") from these
generated isolines in a network?

Regards,

Johannes

Johannes,

I don't think there's anything to do this automatically in Grass-GIS. But I
think you should be able to construct a script that would connect pairs of
points.

So if you can extract each end point of the network segment, you would end
up with a vector containing only points - then create a temporary map of a
point pair, run (say) v.distance output=connectors on each point pair, patch
the resulting maps together ...

It sounds a bit labourious, and probably someone else can think of something
easier, but if you get all the individual steps right, a script is then easy
to create.

(Actually, Johannes, I think the idea is brilliant. I've done lots of
network service area work, and it never occurred to me before!)

Richard Chirgwin

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user
    
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

Hi,

would you mind to write a smal FAQ for us?
http://grass.osgeo.org/wiki/Faq

Thanks
Markus

On Fri, Apr 9, 2010 at 2:51 PM, Johannes Sommer <johann.online@gmx.de> wrote:

David,

thank you very much! I tested your approach with network isolines
derived from a dataset with one center - and it worked very well!
The automated approach will be interesting (also with more than one
center) - but therefore I need more experience in GRASS scripting.

thanks,
Johannes

David Mahoney schrieb:

I went through this last year, and as I remember, v.hull doesn't quite
get you there, since the resultant polygon can't "dip in" to reach
concave sections of a service area. I used v.delaunay to create a
network of the nodes that made up the connections between service areas,
and v.net.salesman to generate the edges of the service areas.

David

On Mon, 2010-04-05 at 09:04 -0300, Daniel Victoria wrote:

If I understand you correctly, v.hull might help to create the service
area polygon from the points....

http://grass.itc.it/grass62/manuals/html62_user/v.hull.html

On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
<rchirgwin@ozemail.com.au> wrote:

------------------------------

Message: 3
Date: Sat, 03 Apr 2010 23:11:26 +0200
From: "Johannes Sommer" <Johann.online@gmx.de>
Subject: [GRASS-user] v.net.iso - service area
To: grass-user@lists.osgeo.org
Message-ID: <20100403211126.313360@gmx.net>
Content-Type: text/plain; charset="iso-8859-1"

Hi list,

recently I played around with the network functionality in ArcGIS. I
generated so called "Service Areas" in a network dataset which return the
regions that can be accessed in a network dataset based on several distances
(in my example 150, 400 meters).

I wanted to reproduce the results with GRASS GIS and after a short search
I found the module v.net.iso which seemed to fit my needs. It returns
exactly the same results as ArcGIS did on isolines on a network, but I can't
find any solution concerning the service areas.

Can anyone point me in the right direction to calculate zones (that is
"build polygons from the end points of each network segment") from these
generated isolines in a network?

Regards,

Johannes

Johannes,

I don't think there's anything to do this automatically in Grass-GIS. But I
think you should be able to construct a script that would connect pairs of
points.

So if you can extract each end point of the network segment, you would end
up with a vector containing only points - then create a temporary map of a
point pair, run (say) v.distance output=connectors on each point pair, patch
the resulting maps together ...

It sounds a bit labourious, and probably someone else can think of something
easier, but if you get all the individual steps right, a script is then easy
to create.

(Actually, Johannes, I think the idea is brilliant. I've done lots of
network service area work, and it never occurred to me before!)

Richard Chirgwin

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

David,

I'd just like to confirm the process ...

1. Obtain points you wish to use as the service area edge nodes (I will call this vector "Limit").
2. Run v.delaunay to create a vector that includes the outline (map=Delaunay).
3. Run v.net to connect Limit to Delaunay (map=Network)
4. Run v.net.salesman on Network to create the final service area map.

This seemed to work fine for me in Spearfish.

One question - I created the "point set" manually. But if have a network of lines, what's the best way to create a point vector from the line ends?

Richard

Markus Neteler wrote:

Hi,

would you mind to write a smal FAQ for us?
http://grass.osgeo.org/wiki/Faq

Thanks
Markus

On Fri, Apr 9, 2010 at 2:51 PM, Johannes Sommer <johann.online@gmx.de> wrote:
  

David,

thank you very much! I tested your approach with network isolines
derived from a dataset with one center - and it worked very well!
The automated approach will be interesting (also with more than one
center) - but therefore I need more experience in GRASS scripting.

thanks,
Johannes

David Mahoney schrieb:
    

I went through this last year, and as I remember, v.hull doesn't quite
get you there, since the resultant polygon can't "dip in" to reach
concave sections of a service area. I used v.delaunay to create a
network of the nodes that made up the connections between service areas,
and v.net.salesman to generate the edges of the service areas.

David

On Mon, 2010-04-05 at 09:04 -0300, Daniel Victoria wrote:

If I understand you correctly, v.hull might help to create the service
area polygon from the points....

http://grass.itc.it/grass62/manuals/html62_user/v.hull.html

On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
<rchirgwin@ozemail.com.au> wrote:

------------------------------

Message: 3
Date: Sat, 03 Apr 2010 23:11:26 +0200
From: "Johannes Sommer" <Johann.online@gmx.de>
Subject: [GRASS-user] v.net.iso - service area
To: grass-user@lists.osgeo.org
Message-ID: <20100403211126.313360@gmx.net>
Content-Type: text/plain; charset="iso-8859-1"

Hi list,

recently I played around with the network functionality in ArcGIS. I
generated so called "Service Areas" in a network dataset which return the
regions that can be accessed in a network dataset based on several distances
(in my example 150, 400 meters).

I wanted to reproduce the results with GRASS GIS and after a short search
I found the module v.net.iso which seemed to fit my needs. It returns
exactly the same results as ArcGIS did on isolines on a network, but I can't
find any solution concerning the service areas.

Can anyone point me in the right direction to calculate zones (that is
"build polygons from the end points of each network segment") from these
generated isolines in a network?

Regards,

Johannes

Johannes,

I don't think there's anything to do this automatically in Grass-GIS. But I
think you should be able to construct a script that would connect pairs of
points.

So if you can extract each end point of the network segment, you would end
up with a vector containing only points - then create a temporary map of a
point pair, run (say) v.distance output=connectors on each point pair, patch
the resulting maps together ...

It sounds a bit labourious, and probably someone else can think of something
easier, but if you get all the individual steps right, a script is then easy
to create.

(Actually, Johannes, I think the idea is brilliant. I've done lots of
network service area work, and it never occurred to me before!)

Richard Chirgwin

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

Hi Markus,

I 'll write a FAQ when I get correct results from the process of network
service area. David's approach of using v.net.salesman on a
delauany-graph worked for a few special geometries. But I think the
results are not really good for many cases.
I' ve got an idea about another solution but it's not fully tested yet.

The problem of automatically finding the endpoints as Richard mentioned
it will also be part of the research.
More on this when I have more time to work on this.

regards,
Johannes

Markus Neteler schrieb:

Hi,

would you mind to write a smal FAQ for us?
http://grass.osgeo.org/wiki/Faq

Thanks
Markus

On Fri, Apr 9, 2010 at 2:51 PM, Johannes Sommer <johann.online@gmx.de> wrote:
  

David,

thank you very much! I tested your approach with network isolines
derived from a dataset with one center - and it worked very well!
The automated approach will be interesting (also with more than one
center) - but therefore I need more experience in GRASS scripting.

thanks,
Johannes

David Mahoney schrieb:
    

I went through this last year, and as I remember, v.hull doesn't quite
get you there, since the resultant polygon can't "dip in" to reach
concave sections of a service area. I used v.delaunay to create a
network of the nodes that made up the connections between service areas,
and v.net.salesman to generate the edges of the service areas.

David

On Mon, 2010-04-05 at 09:04 -0300, Daniel Victoria wrote:

If I understand you correctly, v.hull might help to create the service
area polygon from the points....

http://grass.itc.it/grass62/manuals/html62_user/v.hull.html

On Sun, Apr 4, 2010 at 8:12 PM, Richard Chirgwin
<rchirgwin@ozemail.com.au> wrote:

------------------------------

Message: 3
Date: Sat, 03 Apr 2010 23:11:26 +0200
From: "Johannes Sommer" <Johann.online@gmx.de>
Subject: [GRASS-user] v.net.iso - service area
To: grass-user@lists.osgeo.org
Message-ID: <20100403211126.313360@gmx.net>
Content-Type: text/plain; charset="iso-8859-1"

Hi list,

recently I played around with the network functionality in ArcGIS. I
generated so called "Service Areas" in a network dataset which return the
regions that can be accessed in a network dataset based on several distances
(in my example 150, 400 meters).

I wanted to reproduce the results with GRASS GIS and after a short search
I found the module v.net.iso which seemed to fit my needs. It returns
exactly the same results as ArcGIS did on isolines on a network, but I can't
find any solution concerning the service areas.

Can anyone point me in the right direction to calculate zones (that is
"build polygons from the end points of each network segment") from these
generated isolines in a network?

Regards,

Johannes

Johannes,

I don't think there's anything to do this automatically in Grass-GIS. But I
think you should be able to construct a script that would connect pairs of
points.

So if you can extract each end point of the network segment, you would end
up with a vector containing only points - then create a temporary map of a
point pair, run (say) v.distance output=connectors on each point pair, patch
the resulting maps together ...

It sounds a bit labourious, and probably someone else can think of something
easier, but if you get all the individual steps right, a script is then easy
to create.

(Actually, Johannes, I think the idea is brilliant. I've done lots of
network service area work, and it never occurred to me before!)

Richard Chirgwin

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

On Sat, 2010-04-10 at 08:16 +1000, Richard Chirgwin wrote:

David,

I'd just like to confirm the process ...

1. Obtain points you wish to use as the service area edge nodes (I will
call this vector "Limit").
2. Run v.delaunay to create a vector that includes the outline
(map=Delaunay).
3. Run v.net to connect Limit to Delaunay (map=Network)
4. Run v.net.salesman on Network to create the final service area map.

This seemed to work fine for me in Spearfish.

One question - I created the "point set" manually. But if have a network
of lines, what's the best way to create a point vector from the line ends?

As I recall, I parsed the output of v.build using the dump option, and
passed that into v.extract.

There are probably a bunch of edge cases where this approach fails
though. The one that comes to mind is the case where there is a section
of a service area that is strongly convex that protrudes into another
service area.

David

--
______________________________________________________________________
David Mahoney GIS Analyst
david.mahoney@tecogroup.ca TECO Natural Resource Group
Tel: (250) 562-2628 ext 232 Fax: (250) 562-694
1579 9th Ave, Prince George BC, Canada V2L 3R8 http://www.tecogroup.ca
_______________________________________________________________________

Hi all,

I cannot follow the explanation of David regarding the endpoints but the
following was my approach.

I didin't find a GRASS-only-way extracting the endpoints of a network
graph (or part of it), but with PostGIS it worked.

I thought of a geometry of a network graph, that is only made of edges
and nodes. When you intersect all of these points with each other and take
only those whose intersection count is 1 you have the endpoints of a
network graph.

The GRASS part:
1. check for double *line* geometries resulting from v.net.iso and clean
them ("v.clean tool=rmdupl")
2. extract the nodes of the network graph with "v.to.points -n" (do not
clean double geometries here!)
3. export nodes with v.out.ogr to PostGIS

PostGIS:
---- SQL
CREATE TABLE endpoints_of_network_graph AS
(SELECT count(*), st_collect(a.wkb_geometry)
  FROM nodes a, nodes b
WHERE st_intersects(a.wkb_geometry, b.wkb_geometry)
GROUP BY a.wkb_geometry
HAVING count(*) = 1);
--- end of SQL

Is it possible to translate the PostGIS-part into "GRASSish"? I haven't
found any function that counts intersections in GRASS.

regards,
Johannes

David Mahoney schrieb:

On Sat, 2010-04-10 at 08:16 +1000, Richard Chirgwin wrote:
  

David,

I'd just like to confirm the process ...

1. Obtain points you wish to use as the service area edge nodes (I will
call this vector "Limit").
2. Run v.delaunay to create a vector that includes the outline
(map=Delaunay).
3. Run v.net to connect Limit to Delaunay (map=Network)
4. Run v.net.salesman on Network to create the final service area map.

This seemed to work fine for me in Spearfish.

One question - I created the "point set" manually. But if have a network
of lines, what's the best way to create a point vector from the line ends?

As I recall, I parsed the output of v.build using the dump option, and
passed that into v.extract.

There are probably a bunch of edge cases where this approach fails
though. The one that comes to mind is the case where there is a section
of a service area that is strongly convex that protrudes into another
service area.

David