TransWikia.com

Transferring attributes to neighbors in point layer using QGIS

Geographic Information Systems Asked by user169441 on January 7, 2021

My goal is to create a wind map for an area about 300 km² in QGIS.

For this i have the data of only one weather station. The idea is to estimate the wind speed by the roughness lenght and the elevation. With a DEM i extract a homogeneous point layer with the elevation as attributes (the roughness i got from a land cover layer).

Now i want to transfer the wind speed, starting from the point from which i got the wind data, to the eight surrounding points (as shown in the second picture). With this given attribute every point shall perform an internal calculation (logarithmic profile calculation) and pass the result (their wind speed) to the next points until all points in the layer contain the value. If a point gets more than one different value from the surrounding points, it should do the calculation with the mean value (the structure, which is shown in the second picture, is just an example; in this case there are no overlays) . Unfortunately, I don’t know how to transfer the attribute to the neighbors. How can I do that?

The logarithmic profile calculation is :

enter image description here

v=wind speed, h=height and z=roughness

or an approach in QGIS:

case
when "VALUE_2" > 0 then round("Windgeschw" * (log(2.7183, ((10 + "VALUE" - "VALUE_2")/"Rauhigkeit"))/log(2.7183, (10/"Rauhigkeit"))), 1)
else ''
end

where
"VALUE" is height at the point
"VALUE_2" is the given height from point 1
"Rauhigkeit" is roughness
"Windgeschw" is the given wind speed from point1

After that the result should be given to the next points.

enter image description here

One Answer

IMHO you are making things a bit complicated, I think that there is no need in the gradual point calculus because all new values are comming from one point

Let's assume there is a layer "pois" with its corresponding attribute table accordingly, see image below.

input

Note: On the image above there is only one point with the wind data, i.e. a point with "id" = 1.

In the Attribute Table apply the following expression

attribute(get_feature('pois','id',1),'v')*ln("h"/1)/ln(attribute(get_feature('pois','id',1),'h')/1)

click 'Update All' and get the output for other points, see image below

enter image description here

Note: As a roughness parameter I have used 1.


References:

Answered by Taras on January 7, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP