[Qgis-user] [Bulk] Re: Retrieve value from another layer related to its localisation

Enrico Ferreguti enricofer at gmail.com
Thu Jan 15 06:54:16 PST 2015


Ok. so i would proceed degrading line geometry to point geometry creating
two X and Y fields in the original table with xat(0) and yat(0) functions.
I would add a featureid field with $id function for  a following join. Then
I would export everything in cvs and import back with "Add Delimited Text
Layer" creatin geometry from X and Y fields.
>From the the degraded new table is now possible to apply geomnearest
function joining the added fields with featureid field.
...a bit tricky but it should work.

Regards




2015-01-15 14:25 GMT+01:00 Junior Delaz <delazj at gmail.com>:

> Thanks Enrico for your reply and for the plugin.
>
> I was aware of RefFunctions and has already used it for relational
> questions. And I agree with Jean that such functions (and others of your
> plugins) might be core functions. I've moreover reported a feature request
> to improve usability of all this #11680
> <https://hub.qgis.org/issues/11680>.
> And I tried it again this time. but the main problem is I don't want to
> retrieve field value of the nearest point to my line geometry. I want to
> retrieve field value of the nearest point *to the first vertex* of my
> line geometry. While using just geomnearest, i'll get only the nearest
> point to the whole line. It may be the point at the beginning or the one at
> the end of the line, I can't know.
> What I did is to create a point file containing my vertices and then use
> refFunctions to get the nearest station ID.
>
> But, isn't it possible to do the request without the step of creating new
> point file? Using in the condition "being nearest to the geomfromWKT('POINT
> (xat(0) yat(0)) ') of line feature"?
> How can I write in the field calculator of a line layer such function :
> dbquery ('mypointlayer', 'pointID', 'the condition is to be the nearest
> point to the first vertex of the line')? Or dbvalue? Is it possible to
> combine reference functions with others?
>
> And more generally, are Reference functions conditions intended to be only
> internal to the target layer or can I use values/fields from the source
> layer? If latter, how can I refer to the source layer in the expression?
>
> Thanks
>
>
> 2015-01-15 12:05 GMT+01:00 Tijan49 <tijan49 at yahoo.fr>:
>
>>  Hi,
>> I knew about those functions a few weeks ago, and I was really happy
>> about that, because it is a lack in the basic function.
>> For I, those new functions should really be in the core project in the
>> next release ...
>> Thanks to all the programmers.
>> Jean
>>
>> Le 15/01/2015 11:59, Enrico Ferreguti a écrit :
>>
>>   You can use refFunctions (http://plugins.qgis.org/plugins/refFunctions/)
>> plugin that extends Field Calculator with a new Reference group.
>>  Within this group you will find a geomnearest and a geomdistance
>> function that can help you.
>>
>>  copy and paste from helper screen:
>>
>> geomnearest function
>>
>>
>> Retrieve target field value from the nearest target feature in target
>> layer
>>
>> Syntax
>>
>> geomnearest(targetLayer,targetField)
>>
>> Arguments
>>
>> targetLayer → the name of a currently loaded layer, for example
>> 'myLayer'.
>> targetField → a field in target layer we want as result when source
>> feature is within target feature, for example 'myField'.
>> If targetField is equal to '$geometry' The WKT geometry of targetFeature
>> willbe retrieved. If otherwise is equal to '$distance' the calculated
>> distance between source and target features will be returned
>> Number of feature tested is limited to 100000 to avoid time wasting loops
>>
>> Example
>>
>> geomnearest('targetLayer','TargetField')
>> geomnearest('targetLayer','$geometry')
>> geomnearest('targetLayer','$distance')
>>
>>
>> 2015-01-15 11:19 GMT+01:00 Junior Delaz <delazj at gmail.com>:
>>
>>>    Hi all,
>>>
>>>  I have two shapefiles : a line one (called "section") and a point one
>>> (called "station") shapefiles.
>>>  The line shapefiles has fields like ID_section, ID_first, ID_last
>>>  The point file has an ID_station.
>>>  All these define a kind of network where a section begins on a station
>>> and ends up at another station.
>>>  What I need to do is to fill :
>>> - section ID_first field with the ID_station of the station that is the
>>> closest to the beginning of the section
>>> - and section ID_last field with the ID_station of the closest station
>>> to the end of the line.
>>>
>>> I can obtain this result while combining many analysis tools and plugins
>>> (QChainage, Spatial_Join...). I know how I can do it. There might be a way
>>> with processing tools and if somebody has an idea, I'll be glad to know it
>>> however.
>>>
>>>  But what I'm really wondering is if it isn't directly possible to fill
>>> these fields in the Field calculator using all the nice functions we have.
>>> Indeed, QGIS 2.6 and RefFunctions plugin give relational fonctions to
>>> retrieve values on a specific layer according to its fields, features
>>> values or localisation.
>>>  I tried many combinations with db_query, geomnearest, geomRedef,
>>> xat/yat, buffer, geometry, within , attribute (not all at the same time :)
>>> ).... I'm pretty sure it's possible but I can't find. And I don't want to
>>> lose all my hair...
>>>
>>>  Does anybody know how I can retrieve in a line shapefile's field the
>>> value of the point feature that is the closest to the first vertex of this
>>> line, within the field calculator?
>>>
>>>  Thanks ...
>>>
>>
>>
>>
>> _______________________________________________
>> Qgis-user mailing listQgis-user at lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/qgis-user
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20150115/26dd9401/attachment.html>


More information about the Qgis-user mailing list