[GRASS5] Re: Vector symbols & g.region

Bob,
(cc grass5)

On Thu, Dec 09, 2004 at 10:08:46AM -0400, Bob Covill wrote:

>On Thu, Dec 09, 2004 at 09:27:26AM -0400, Bob Covill wrote:
>>What is the status of the vector symbols in 5.7? I have created a few
>>more basic symbols and can apply them to CVS. At this point in time I
>>have created them under basic, but I assume at some point in time we
>>will need to create more sub-categories (eg. basic, map, geology, ...).
>
Okay, I have applied the following symbols to CVS under basic ...

airport arrow1 arrow2 compass cross1 cross2 marker octagon star target

The cross1 symbol is the original cross renamed. The two arrows are two
different styles of arrows both pointing north. They are centered (0,0)
at the center of the arrow. This may need to be changed so that the
arrow tip is center (0,0)? The marker symbol is a simple flag marker
that is centered at the base of the flag pole.

Hope these are helpful.

Yes, thanks!

I have right now added a button/selector to d.vect (nice for the tcl popup).

>
>
>>Also, I had changed g.region a while back to accept multiple entries
>>under "rast=". I had added this when I was working with a large number
>>of air-photos and needed to easily set the region to the group of
>>rasters (for exmaple before running r.patch). If this is something that
>>others may find useful I could submit it for testing. Also, a similar
>>option could be added for vectors.
>
>
>Dreams come true! I am in the need of that function for years.
>How do you deal with resolution? Averaged or highest resolution appearing
>in the list of rasters?
>
>Please apply that as well as it is very useful.

I have applied my changes to CVS. I had written it so that it picks up
the resultion from the first raster in the list. It may be preferable to
use the smallest resolution from the list of rasters?

Give it a try and let me know what you think.

Works well.

Thanks a lot

Markus

Now there are a couple things for me work on with the d.m over Christmas
break. Nice addition (as is the idea of adding a none checkbox for line
color, like we already have for fill color)

Michael

On 12/10/04 8:39 AM, "Markus Neteler" <neteler@itc.it> wrote:

Bob,
(cc grass5)

On Thu, Dec 09, 2004 at 10:08:46AM -0400, Bob Covill wrote:

On Thu, Dec 09, 2004 at 09:27:26AM -0400, Bob Covill wrote:

What is the status of the vector symbols in 5.7? I have created a few
more basic symbols and can apply them to CVS. At this point in time I
have created them under basic, but I assume at some point in time we
will need to create more sub-categories (eg. basic, map, geology, ...).

Okay, I have applied the following symbols to CVS under basic ...

airport arrow1 arrow2 compass cross1 cross2 marker octagon star target

The cross1 symbol is the original cross renamed. The two arrows are two
different styles of arrows both pointing north. They are centered (0,0)
at the center of the arrow. This may need to be changed so that the
arrow tip is center (0,0)? The marker symbol is a simple flag marker
that is centered at the base of the flag pole.

Hope these are helpful.

Yes, thanks!

I have right now added a button/selector to d.vect (nice for the tcl popup).

Also, I had changed g.region a while back to accept multiple entries
under "rast=". I had added this when I was working with a large number
of air-photos and needed to easily set the region to the group of
rasters (for exmaple before running r.patch). If this is something that
others may find useful I could submit it for testing. Also, a similar
option could be added for vectors.

Dreams come true! I am in the need of that function for years.
How do you deal with resolution? Averaged or highest resolution appearing
in the list of rasters?

Please apply that as well as it is very useful.

I have applied my changes to CVS. I had written it so that it picks up
the resultion from the first raster in the list. It may be preferable to
use the smallest resolution from the list of rasters?

Give it a try and let me know what you think.

Works well.

Thanks a lot

Markus

______________________________
Michael Barton, Professor of Anthropology
School of Human, Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402
USA

voice: 480-965-6262; fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

On Fri, Dec 10, 2004 at 04:39:49PM +0100, Markus Neteler wrote:

Bob,
(cc grass5)

On Thu, Dec 09, 2004 at 10:08:46AM -0400, Bob Covill wrote:
> >On Thu, Dec 09, 2004 at 09:27:26AM -0400, Bob Covill wrote:
> >>What is the status of the vector symbols in 5.7? I have created a few
> >>more basic symbols and can apply them to CVS. At this point in time I
> >>have created them under basic, but I assume at some point in time we
> >>will need to create more sub-categories (eg. basic, map, geology, ...).
> >
> Okay, I have applied the following symbols to CVS under basic ...
>
> airport arrow1 arrow2 compass cross1 cross2 marker octagon star target
>
> The cross1 symbol is the original cross renamed. The two arrows are two
> different styles of arrows both pointing north. They are centered (0,0)
> at the center of the arrow. This may need to be changed so that the
> arrow tip is center (0,0)? The marker symbol is a simple flag marker
> that is centered at the base of the flag pole.
>
> Hope these are helpful.

Yes, thanks!

I have right now added a button/selector to d.vect (nice for the tcl popup).

I have fixed it again, the basic/ was not included yet.

To make it working, I had to comment

  /*closedir(dir);*/

to avoid segfault (very strange, I'm sure that I dislike strings).

TODOs (I don't manage to fix it):

- d.vect:
   - make closedir(dir); functional (I guess the dir should be better closed)
   - sort the list of icons for the help text/TCL GUI

- r.colors:
   - sort the list of colors for the help text/TCL GUI

Markus

On 10 Dec 2004, at 17:39, Markus Neteler wrote:

On Thu, Dec 09, 2004 at 10:08:46AM -0400, Bob Covill wrote:

What is the status of the vector symbols in 5.7? I have created a few
more basic symbols and can apply them to CVS. At this point in time I
have created them under basic, but I assume at some point in time we
will need to create more sub-categories (eg. basic, map, geology, ...).

i updated d.m/vector.tcl that it can handle multiple categories. the problem is, that the categories are hard-coded (the icons aren't anymore, they are selected with a GSelect window) and i haven't figured out how to have them updated without having to change the source code. i hope that a can upload the changes to cvs next week that you can have a look at them.

I have right now added a button/selector to d.vect (nice for the tcl popup).

I have fixed it again, the basic/ was not included yet.

To make it working, I had to comment

  /*closedir(dir);*/

to avoid segfault (very strange, I'm sure that I dislike strings).

although d.vect works again, there is one issue left. with the current selector, the icons are limited to those in the basic directory. as the items on the list created by the new function are something like "basic/icon", d.vect doesn't accept for example "demo/icon" anymore as the "demo" directory doesn't appear anywhere on the possible list.
thus, this version of d.vect doesn't properly work with my changes to vector.tcl or a cli call of d.vect as they both allow the use of other symbol directories than "basic".
for now, that doesn't really matter as there is are no other symbols as those in basic (at least officially, who know what guys have on there hard drives) but once there are more symbol collections this issue has to be addressed.

regards
florian

On Sat, Dec 11, 2004 at 12:12:41PM +0100, Florian Goessmann wrote:

On 10 Dec 2004, at 17:39, Markus Neteler wrote:

>>On Thu, Dec 09, 2004 at 10:08:46AM -0400, Bob Covill wrote:

>>>>>What is the status of the vector symbols in 5.7? I have created a
>>>>>few
>>>>>more basic symbols and can apply them to CVS. At this point in
>>>>>time I
>>>>>have created them under basic, but I assume at some point in time
>>>>>we
>>>>>will need to create more sub-categories (eg. basic, map, geology,
>>>>>...).

i updated d.m/vector.tcl that it can handle multiple categories. the
problem is, that the categories are hard-coded (the icons aren't
anymore, they are selected with a GSelect window) and i haven't figured
out how to have them updated without having to change the source code.

Is there a possibility to access the dynamic list through TCL?
Might be the best solution.

i hope that a can upload the changes to cvs next week that you can have
a look at them.

Yes, should go into CVS.

>>I have right now added a button/selector to d.vect (nice for the tcl
>>popup).
>
>I have fixed it again, the basic/ was not included yet.
>
>To make it working, I had to comment
>
> /*closedir(dir);*/
>
>to avoid segfault (very strange, I'm sure that I dislike strings).

although d.vect works again, there is one issue left. with the current
selector, the icons are limited to those in the basic directory. as the
items on the list created by the new function are something like
"basic/icon", d.vect doesn't accept for example "demo/icon" anymore as
the "demo" directory doesn't appear anywhere on the possible list.
thus, this version of d.vect doesn't properly work with my changes to
vector.tcl or a cli call of d.vect as they both allow the use of other
symbol directories than "basic".
for now, that doesn't really matter as there is are no other symbols as
those in basic (at least officially, who know what guys have on there
hard drives) but once there are more symbol collections this issue has
to be addressed.

Yes, a known problem but I don't know how to program that.
d.vect should loop over the subdirs in /etc/symbol/ and build
a complete list... C programmer welcome.
If it turns out to be impossible (due to time constraints of
other developers), I'll revert it to the manual selection next
week as it was before.

Markus

On 11 Dec 2004, at 12:18, Markus Neteler wrote:

On Sat, Dec 11, 2004 at 12:12:41PM +0100, Florian Goessmann wrote:

i updated d.m/vector.tcl that it can handle multiple categories. the
problem is, that the categories are hard-coded (the icons aren't
anymore, they are selected with a GSelect window) and i haven't figured
out how to have them updated without having to change the source code.

Is there a possibility to access the dynamic list through TCL?
Might be the best solution.

this is what i was looking for but as i haven't ever written tcl code before yesterday my abilities are, well, limited. the more tcl savy guys will probably find a more decent solution than hard-coding the directories.

Yes, a known problem but I don't know how to program that.
d.vect should loop over the subdirs in /etc/symbol/ and build
a complete list... C programmer welcome.
If it turns out to be impossible (due to time constraints of
other developers), I'll revert it to the manual selection next
week as it was before.

no need to revert it. i fixed that (i don't like strings either). the loop now checks all dirs in /etc/symbols and adds all icons properly (group/icon) to the list. i'll upload these changes to cvs together with all the others i did last week once i have write access.

regards
florian

Florian and Markus,

I'm not sure if this helps or not, but issuing a find command that is
redirected to a text file or variable could create such a list that could
then be grep'ed to get the part of the path name needed by a simple loop in
d.vect and vector.tcl.

E.g:

find -f $GISBASE/etc/symbol/ > symbolpath

Michael

On 12/11/04 7:45 AM, "Florian Goessmann" <florian@wallweg39.de> wrote:

On 11 Dec 2004, at 12:18, Markus Neteler wrote:

On Sat, Dec 11, 2004 at 12:12:41PM +0100, Florian Goessmann wrote:

i updated d.m/vector.tcl that it can handle multiple categories. the
problem is, that the categories are hard-coded (the icons aren't
anymore, they are selected with a GSelect window) and i haven't
figured
out how to have them updated without having to change the source code.

Is there a possibility to access the dynamic list through TCL?
Might be the best solution.

this is what i was looking for but as i haven't ever written tcl code
before yesterday my abilities are, well, limited. the more tcl savy
guys will probably find a more decent solution than hard-coding the
directories.

Yes, a known problem but I don't know how to program that.
d.vect should loop over the subdirs in /etc/symbol/ and build
a complete list... C programmer welcome.
If it turns out to be impossible (due to time constraints of
other developers), I'll revert it to the manual selection next
week as it was before.

no need to revert it. i fixed that (i don't like strings either). the
loop now checks all dirs in /etc/symbols and adds all icons properly
(group/icon) to the list. i'll upload these changes to cvs together
with all the others i did last week once i have write access.

regards
florian

____________________
C. Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
PO Box 872402
Arizona State University
Tempe, AZ 85287-2402
USA

Phone: 480-965-6262
Fax: 480-965-7671
www: <www.public.asu.edu/~cmbarton>

Michael Barton wrote:

I'm not sure if this helps or not, but issuing a find command that is
redirected to a text file or variable could create such a list that could
then be grep'ed to get the part of the path name needed by a simple loop in
d.vect and vector.tcl.

E.g:

find -f $GISBASE/etc/symbol/ > symbolpath

Don't use "find". For a start, it might not be installed on Cygwin (or
the native find.exe might come first in the path); I don't know about
OSX.

Writing directory scanning code isn't particularly complex. In C, the
basic logic is essentially:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>

void scan_directory(const char *directory)
{
  DIR *dir = opendir(directory);
  if (!dir)
    return;

  for (;:wink:
  {
    char path[PATH_MAX];
    struct stat st;
    struct dirent *d;

    /* get next directory entry */
    d = readdir(dir);
    if (!d)
      break;

    /* skip hidden files/directories */
    if (d->d_name[0] == '.')
      continue;

    /* convert filename to absolute path */
    sprintf(path, "%s/%s", directory, d->d_name);

    /* get type (file/dir/symlink/etc) */
    if (lstat(path, &st) < 0)
      continue;

    if (S_ISDIR(st.st_mode))
      /* recurse into subdirectory */
      scan_directory(path);
    else if (S_ISREG(st.st_mode))
      /* process regular file */
      do_something_with_file(path);
  }

  closedir(dir);
}

--
Glynn Clements <glynn@gclements.plus.com>

> >>>>>What is the status of the vector symbols in 5.7?

..

> i updated d.m/vector.tcl that it can handle multiple categories. the
> problem is, that the categories are hard-coded (the icons aren't
> anymore, they are selected with a GSelect window) and i haven't figured
> out how to have them updated without having to change the source code.

Is there a possibility to access the dynamic list through TCL?
Might be the best solution.

..

> although d.vect works again, there is one issue left. with the current
> selector, the icons are limited to those in the basic directory. as the
> items on the list created by the new function are something like
> "basic/icon", d.vect doesn't accept for example "demo/icon" anymore as
> the "demo" directory doesn't appear anywhere on the possible list.
> thus, this version of d.vect doesn't properly work with my changes to
> vector.tcl or a cli call of d.vect as they both allow the use of other
> symbol directories than "basic".
> for now, that doesn't really matter as there is are no other symbols as
> those in basic (at least officially, who know what guys have on there
> hard drives) but once there are more symbol collections this issue has
> to be addressed.

Yes, a known problem but I don't know how to program that.
d.vect should loop over the subdirs in /etc/symbol/ and build
a complete list... C programmer welcome.
If it turns out to be impossible (due to time constraints of
other developers), I'll revert it to the manual selection next
week as it was before.

can TCL or C parse a system call to something like:
cd $GISBASE/etc/symbol ; find * | grep /

Hamish

On 13 Dec 2004, at 00:14, Hamish wrote:

can TCL or C parse a system call to something like:
cd $GISBASE/etc/symbol ; find * | grep /

i just fixed a bug caused by the changes i made to d.m and i think i found a possibility how to update the symbol collections automatically by changing the behavior of GSelect. i'll try that next week.

regards
florian

On Sat, Dec 11, 2004 at 03:45:03PM +0100, Florian Goessmann wrote:

no need to revert it. i fixed that (i don't like strings either). the
loop now checks all dirs in /etc/symbols and adds all icons properly
(group/icon) to the list. i'll upload these changes to cvs together
with all the others i did last week once i have write access.

I have submitted the fixed d.vect to CVS now (recursive dymbol
sort enabled).

Thanks to Florian,

Markus

On 11 Dec 2004, at 12:18, Markus Neteler wrote:

i updated d.m/vector.tcl that it can handle multiple categories. the
problem is, that the categories are hard-coded (the icons aren't
anymore, they are selected with a GSelect window) and i haven't figured
out how to have them updated without having to change the source code.

Is there a possibility to access the dynamic list through TCL?
Might be the best solution.

non hard-coded symbol dirs in GIS manager now work. update at least ./lib/gtcltk and ./display/d.m and enjoy (hopefully :slight_smile: )

regards
florian