[GRASS-user] How to create an hull / area with v.in.ascii
Philipp Steigenberger
userlist at online.de
Fri Feb 8 05:15:53 EST 2008
Martin Landa schrieb:
> Hi,
>
> 2008/2/4, Philipp Steigenberger <userlist at online.de>:
>
>> I have cross-profiles of a river and want to create a terrainmodel.
>> To interpolate only there, where points are, I want to create a hull.
>> v.hull doesn't work, cause - how to explain... - imagine, the river has
>> the form of the letter 'S' with v.hull I get a form whisch is almost
>> like a 'D'.
>>
>> Therfore I extracte all the lines where I have the points of the
>> right(r) /left(l) side of the cross-profile
>>
>> I sort them like
>> cat name
>> 1 l 1
>> 2 l 2
>> 3 l 3
>> 4 l 4
>> 5 r 4
>> 6 r 3
>> 7 r 2
>> 8 r 1
>>
>> so it looks like:
>>
>> 1 4417744.050 5363469.320 461.10400 0.20000 P1(li)
>> 2 4417723.140 5363269.800 461.83000 0.40000 P1(left)
>> 3 4417716.890 5363068.970 461.40100 0.60000 P1(left)
>> 4 4417705.220 5362867.590 461.93600 0.80000 P1(left)
>> 354 4403074.030 5335808.330 559.44700 34.00000 P2(right)
>> 355 4402974.470 5335628.060 559.60400 34.20000 P2(right)
>> 356 4402876.360 5335452.300 560.11700 34.40000 P2(right)
>> 357 4402779.380 5335277.370 561.11800 34.60000 P2(right)
>>
>> I add
>> A 357 1 in the first line and
>> 1 1 in the last line
>>
>> Now I want to import this as an area:
>>
>> cat wertach.asc | v.in.ascii --o output=wertach skip=1 -z z=4 cat=1 x=2
>> y=3 colum='cat int, x double, y double, z double, name01 varchar(20),
>> name02 varchar(20)' fs=' '
>>
>> and get
>>
>> Scanning input for column types...
>> Maximum input row length: 54
>> Maximum number of columns: 6
>> Minimum number of columns: 2
>> ERROR: y column number > minimum last column number
>> (incorrect field separator?)
>>
>> so I delete the last line and get
>>
>> Scanning input for column types...
>> Maximum input row length: 54
>> Maximum number of columns: 6
>> Minimum number of columns: 6
>> WARNING: Column number 5 defined as string has double values
>> Importing points...
>> Populating table...
>> Building topology for vector map <wertach>...
>> 357 primitives registered
>> Building areas: 100%
>> 0 areas built
>> 0 isles built
>> Attaching islands:
>> Attaching centroids: 100%
>> Topology was built
>> Number of nodes : 357
>> Number of primitives: 357
>> Number of points : 357
>> Number of lines : 0
>> Number of boundaries: 0
>> Number of centroids : 0
>> Number of areas : 0
>> Number of isles : 0
>> v.in.ascii complete.
>>
>> NO AREA :o(
>>
>> If I try
>> B 357 1 for a boundary I get the same
>>
>> Scanning input for column types...
>> Maximum input row length: 54
>> Maximum number of columns: 6
>> Minimum number of columns: 6
>> WARNING: Column number 5 defined as string has double values
>> Importing points...
>> Populating table...
>> Building topology for vector map <wertach>...
>> 357 primitives registered
>> Building areas: 100%
>> 0 areas built
>> 0 isles built
>> Attaching islands:
>> Attaching centroids: 100%
>> Topology was built
>> Number of nodes : 357
>> Number of primitives: 357
>> Number of points : 357
>> Number of lines : 0
>> Number of boundaries: 0
>> Number of centroids : 0
>> Number of areas : 0
>> Number of isles : 0
>> v.in.ascii complete.
>>
>> NO BOUNDARY :o(
>>
>> what went wrong? How to bulid an area? Do I need a centroid? How to get it?
>> Or do I only need x and y -values to create the area?
>>
>
> Please, take a look at v.in.ascii manual page where GRASS ASCII format
> is described. E.g.
>
> B 2 1
> 595521.680672 4925244.201681
> 593757.983193 4917668.319328
> 1 1
> B 5 1
> 593757.983193 4917668.319328
> 593757.983193 4917668.319328
> 603618.655462 4915223.193277
> 606344.369748 4923801.176471
> 595521.680672 4925244.201681
> 1 1
> B 4 1
> 595521.680672 4925244.201681
> 589468.991597 4926727.310924
> 587945.798319 4918670.420168
> 593757.983193 4917668.319328
> 1 2
> C 1 1
> 599449.915966 4920554.369748
> 1 3
> C 1 1
> 591072.352941 4922077.563025
> 1 4
>
> defines three boundaries (category 1,2) and two centroids (cat 3,4).
>
> cat input.txt | v.in.ascii out=xx for=standard -n --o
>
> Note that you need to specify input format (default format is 'points'
> not 'standard'). After import you can also add missing centroids using
> v.centroids module.
>
> Martin
>
>
Martin,
I always use the help and man pages when I work within GRASS, but do not
understand everything...
I also have the new Neteler & Mitasova...
Now I know which syntax I need for ponts and which for standard (lines etc.)
Is it is important to have leading blanks in front of the points? Or is
it just for clarity?
B 5 1
593757.983193 4917668.319328
593757.983193 4917668.319328
603618.655462 4915223.193277
606344.369748 4923801.176471
595521.680672 4925244.201681
2 3
For my own clarity
B for Boundary, L for Lin,e A for Area, C for Centroid, and P for Point
5 is the number of points
1 ??? Neteler & Mitasova describe "1 for a single category" - what does this mean?
2 is the layer number
3 is the category ID
In your example the first and second boundary have the same cat ID. Why?
More and more I understand this vektor-thing in GRASS - but I still need some time ;o)
Thanks a lot
om shantih
Philipp
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://lists.osgeo.org/pipermail/grass-user/attachments/20080208/d7444bb2/attachment.html
More information about the grass-user
mailing list