Done,
http://code.google.com/p/web2py/issues/detail?id=1259&thanks=1259&ts=1357666735
Thanks

Paolo


2013/1/8 Massimo Di Pierro <massimo.dipie...@gmail.com>

> Please open a ticket so I will look into it asap. I would add the st_x/y
> to all GIS adapters.
>
>
> On Tuesday, January 8, 2013 9:36:57 AM UTC-6, Paolo valleri wrote:
>>
>> Hi Massimo, good to know that the patch is in trunk but I it is only for
>> the postgres adapter, I can try to define the same functions for the other
>> adapter but then someone has to check if they works or not.
>>
>> For what concern the other issue I will open I ticket, the main problem
>> is that web2py makes all the common fields name lower while it store the
>> 'gis' fields as is. I have just tried this:
>> db.define_table('test_geo1_**name',
>>     Field('name_P', 'string'),
>>     Field('location_P','geometry()**'),
>> )
>> In the db I have the field *name_p* and *location_P* respectively. To
>> fix it, I added in dal.py .lower() at line 832:
>> ftype = ftype % dict(schema=schema,
>>                      tablename=tablename,
>>                      fieldname=field_name.lower(), srid=srid,
>>                      dimension=dimension)
>> And now in the db I have the field *name_p* and *location_p* respectively
>>
>> Paolo
>>
>>
>>
>>
>>
>> On Tuesday, January 8, 2013 3:48:56 PM UTC+1, Massimo Di Pierro wrote:
>>>
>>> In trunk. How about the previous issue? Is that still open? If so, can
>>> you please open a ticket? Thanks.
>>>
>>> On Tuesday, 8 January 2013 05:31:28 UTC-6, Paolo valleri wrote:
>>>>
>>>> Hi all, I have a simple problem, how I can extract values of a single
>>>> point?
>>>> I found that there are the functions ST_X, and ST_Y.
>>>> Please find attached a patch that add them to dal and to the postgres
>>>> adapter, I haven't put them neither to MSSQLAdapter nor to
>>>> SQLITESpatiaLiteAdapter because I don't have those db to run tests.
>>>> Now you can do something like:
>>>> print db(db.city).select(db.city.lat**lng,
>>>>                          db.city.latlng.st_x(),
>>>>                          db.city.latlng.st_y())
>>>>
>>>> city.latlng,ST_X(city.latlng),**ST_Y(city.latlng)
>>>> POINT(51.507335 -0.127683),51.507335,-0.127683
>>>> POINT(41.901514 12.460774),41.901514,12.460774
>>>> POINT(40.851775 14.268124),40.851775,14.268124
>>>> The geometry field MUST contain only point otherwise it raises an error.
>>>>
>>>> Hope it helps
>>>>
>>>> Paolo
>>>>
>>>>
>>>>
>>>> On Sunday, January 6, 2013 5:29:52 PM UTC+1, Paolo valleri wrote:
>>>>>
>>>>> Hi Massimo, I found an other strange behavior. I tried to capitalize
>>>>> the name of a field, as follows:
>>>>> db.define_table('test_geo',
>>>>>                 Field('loc_Test','geometry()')**,
>>>>> )
>>>>> and I get this error:
>>>>>
>>>>> Traceback (most recent call last):
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/restricted.py", line 212, 
>>>>> in restricted
>>>>>
>>>>>     exec ccode in environment
>>>>>
>>>>>   File 
>>>>> "/home/paolo/Dropbox/git/**web2py/applications/bikend/**models/db.py" 
>>>>> <http://127.0.0.1:8000/admin/default/edit/bikend/models/db.py>, line 585, 
>>>>> in <module>
>>>>>
>>>>>     db.test_geo.insert(loc_Test=ge**oPoint(45.89096,11.0401399))
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 7977, in 
>>>>> insert
>>>>>
>>>>>     ret =  self._db._adapter.insert(self**,self._listify(fields))
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 1175, in 
>>>>> insert
>>>>>
>>>>>     raise e
>>>>> ProgrammingError: column "loc_test" of relation "test_geo" does not exist
>>>>>
>>>>> LINE 1: INSERT INTO test_geo(loc_Test) VALUES (ST_GeomFromText('POIN...
>>>>>
>>>>> and so I tried to insert without the capitalize and I get this error:
>>>>>
>>>>> Traceback (most recent call last):
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/restricted.py", line 212, 
>>>>> in restricted
>>>>>
>>>>>     exec ccode in environment
>>>>>
>>>>>   File 
>>>>> "/home/paolo/Dropbox/git/**web2py/applications/bikend/**models/db.py" 
>>>>> <http://127.0.0.1:8000/admin/default/edit/bikend/models/db.py>, line 585, 
>>>>> in <module>
>>>>>
>>>>>     db.test_geo.insert(loc_test=ge**oPoint(45.89096,11.0401399))
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 7977, in 
>>>>> insert
>>>>>
>>>>>     ret =  self._db._adapter.insert(self**,self._listify(fields))
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 7915, in 
>>>>> _listify
>>>>>
>>>>>     'Field %s does not belong to the table' % name)
>>>>> SyntaxError: Field loc_test does not belong to the table
>>>>>
>>>>>
>>>>> finally, I redefined the table as was before, (without any capital
>>>>> latter) and I get this:
>>>>>
>>>>> Traceback (most recent call last):
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/restricted.py", line 212, 
>>>>> in restricted
>>>>>
>>>>>     exec ccode in environment
>>>>>
>>>>>   File 
>>>>> "/home/paolo/Dropbox/git/**web2py/applications/bikend/**models/db.py" 
>>>>> <http://127.0.0.1:8000/admin/default/edit/bikend/models/db.py>, line 583, 
>>>>> in <module>
>>>>>
>>>>>     db.test_geo.insert(Name='**paolo')
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 7313, in 
>>>>> __getattr__
>>>>>
>>>>>     return self.lazy_define_table(tablena**me,*fields,**args)
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 7281, in 
>>>>> lazy_define_table
>>>>>
>>>>>     polymodel=polymodel)
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 965, in 
>>>>> create_table
>>>>>
>>>>>     fake_migrate=fake_migrate)
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 1068, in 
>>>>> migrate_table
>>>>>
>>>>>     self.execute(sub_query)
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 1714, in 
>>>>> execute
>>>>>
>>>>>     return self.log_execute(*a, **b)
>>>>>
>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 1708, in 
>>>>> log_execute
>>>>>
>>>>>     ret = self.cursor.execute(*a, **b)
>>>>> ProgrammingError: syntax error at or near "SELECT"
>>>>> LINE 1: ALTER TABLE test_geo ADD loc_test__tmp SELECT AddGeometryCol...
>>>>>
>>>>>
>>>>>
>>>>> Hope it helps,
>>>>> Paolo
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> I changed the name of the field:
>>>>>
>>>>>
>>>>> On Sunday, January 6, 2013 5:01:32 PM UTC+1, Paolo valleri wrote:
>>>>>>
>>>>>> well done! All the former tests worked. I will investigate more the
>>>>>> others functions as soon as possible.
>>>>>>
>>>>>> Paolo
>>>>>>
>>>>>>
>>>>>> On Sunday, January 6, 2013 4:28:13 PM UTC+1, Massimo Di Pierro wrote:
>>>>>>>
>>>>>>> One more try please.
>>>>>>>
>>>>>>> On Sunday, 6 January 2013 02:11:09 UTC-6, Paolo valleri wrote:
>>>>>>>>
>>>>>>>> Hi Massimo, I've tried the same 3 tests.
>>>>>>>> The first one failed, it was working before though, the ticket:
>>>>>>>>
>>>>>>>> Traceback (most recent call last):
>>>>>>>>
>>>>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/restricted.py", line 
>>>>>>>> 212, in restricted
>>>>>>>>
>>>>>>>>     exec ccode in environment
>>>>>>>>
>>>>>>>>   File 
>>>>>>>> "/home/paolo/Dropbox/git/**web2py/applications/bikend/**models/db.py" 
>>>>>>>> <http://127.0.0.1:8000/admin/default/edit/bikend/models/db.py>, line 
>>>>>>>> 586, in <module>
>>>>>>>>
>>>>>>>>     print db(query)._select(db.test_geo.**id, db.test_geo.loc_test)
>>>>>>>>
>>>>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 8928, in 
>>>>>>>> _select
>>>>>>>>
>>>>>>>>     return adapter._select(self.query,fie**lds,attributes)
>>>>>>>>
>>>>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 1478, in 
>>>>>>>> _select
>>>>>>>>
>>>>>>>>     sql_f = ', '.join(map(geoexpand, fields))
>>>>>>>>
>>>>>>>>   File "/home/paolo/Dropbox/git/**web2py/gluon/dal.py", line 1477, in 
>>>>>>>> geoexpand
>>>>>>>>
>>>>>>>>     return self.expand(field)
>>>>>>>>
>>>>>>>>   <span st...
>>>>>>>> Show original 
>>>>>>>> <https://groups.google.com/group/web2py/msg/c15e58bfcfa50047?dmode=source&output=gplain&noredirect>
>>>>>>>>
>>>>>>>>  --
>
>
>
>



-- 
 Paolo

-- 



Reply via email to