[GRASS-dev] Vector file naming
Helena Mitasova
hmitaso at unity.ncsu.edu
Thu Sep 7 12:15:45 EDT 2006
Trevor Wiens wrote:
> On Thu, 07 Sep 2006 12:40:46 +0000
> Brad Douglas wrote:
>
>
>> On Thu, 2006-09-07 at 13:35 +0200, Markus Neteler wrote:
>>
>>> On Thu, Sep 07, 2006 at 11:12:18AM +0000, Brad Douglas wrote:
>>>
>>>> GRASS 6.3.cvs (hamilton2):/usr/src/grass6 > r.to.vect in=elizabeth.los
>>>> out=elizabeth.los feature=area
>>>> Illegal vector map name <elizabeth.los>. Character <.> not allowed.
>>>> ERROR: Map name is not SQL compliant.
>>>>
>>>> How do file names conflict with SQL92? I thought SQL92 only applied to
>>>> file contents. Is this also being used as a workaround for DBF
>>>> limitations? What I'm getting at is: Why is '.' not allowed? Doing a
>>>> quick archive search failed to illuminate any light bulbs in the
>>>> immediate vicinity.
>>>>
>>> Hi Brad,
>>>
>>> AFAIK '.' is reserved for joins. '_' will work.
>>>
>>> See
>>> http://grass.itc.it/grass63/manuals/html63_user/sql.html
>>> -> NOTES
>>>
>>> It would be nice to have the naiming constraints relaxed but
>>> I am not sure if that's really possible.
>>>
>> '_' is also reserved for matching, so that can't be it.
>>
>> Maybe a better question is: Why doesn't GRASS distinguish between tables
>> and files (database)? I would much prefer to have GRASS automatically
>> substitute '_' for '.' in the table name so I can keep consistent naming
>> conventions across rasters and vectors. It's a usability issue and
>> somewhat annoying. :-)
>>
>
> Well... To my knowledge standard SQL requires a letter as the first
> character of a table name, and after that letters, numbers, or
> underscores are permitted without quotation. If you want to break those
> rules double quotes are required. So the error message is correct.
> Using a period in a table name without double quoting is a violation of
> SQL naming rules. Normally a period is used to related columns to
> tables, aliases etc.
>
> For example
>
> select a.x, b.y
> from schema_one.table_x a, schema_two.table_y b
> where a.q = b.q
>
> Thus it is impossible for SQL to know how to parse this without quotes.
>
>
>> I guess the real question is: How big of a job would this be? Radim?
>> If it isn't an overwhelming job, I'd like to propose it for 7.x.
>>
>
> Since we want to improve database support it seems reasonable to
> provide subtle education for GRASS users about SQL sticking with SQL
> naming restrictions. Therefore, it would be more logical to require
> rasters to fit the same naming restrictions as vectors for the 7.x
> line. There will be many users who will hate this idea as they are
> used to using periods in their raster file names, but this would be
> consistent.
>
Count me among those who really hate this idea as I have dot in about
every single raster file name.
And there are a lot of scripts around that use dots in raster names.
It is already a pain to have that restriction in vector data. I am with
Brad on this one,
Helena
> That said, you are correct that we could implement quoting
> of table names to allow rule breaking naming, but considering the
> difficulties with quotes and bash, this is just a place we don't want
> to go, AFAIC.
>
> So for 7.x we should do one of two things. One, do nothing, as
> relaxing the naming rules for vectors wouldn't be difficult, but it
> would be unwise and would introduce all new levels frustration for
> users not familiar with SQL. Two, enforce SQL and thus vector naming
> restrictions for rasters for the sake of consistency.
>
> T
>
--
Helena Mitasova
Department of Marine, Earth and Atmospheric Sciences
North Carolina State University
1125 Jordan Hall
NCSU Box 8208
Raleigh, NC 27695-8208
http://skagit.meas.ncsu.edu/~helena/
email: hmitaso at unity.ncsu.edu
ph: 919-513-1327 (no voicemail)
fax 919 515-7802
More information about the grass-dev
mailing list