[GRASS-dev] r.sun and pj_do_proj() calls
Seth Price
seth at pricepages.org
Wed Jun 9 23:26:24 EDT 2010
Does latin/longin work for both locations that pj_do_proj() is called,
or just the one in main.c? It looked like some additional calculations
were done in the rsunlib.c call.
Would you be able to write some additional code that uses latin/longin
for the rsunlib.c call? I fear screwing it up because I'm not sure
what it's doing there.
Thanks,
Seth
On Jun 9, 2010, at 9:19 PM, Jaro Hofierka wrote:
>
>
> Markus Neteler wrote:
>> On Wed, Jun 9, 2010 at 6:00 PM, Glynn Clements<glynn at gclements.plus.com
>> > wrote:
>>>
>>> Seth Price wrote:
>>>
>>>> I'm working on translating r.sun to OpenCL to run on the GPU, but
>>>> I've
>>>> hit a bit of a snag. I'm hoping y'all can help or at least tell me
>>>> what I'm looking at.
>>>>
>>>> The root of it is that I can't call pj_do_proj() from within the
>>>> OpenCL kernel, so I need to pass that in from the outside. For
>>>> example, on line 1824 of main.c in the current SVN has us
>>>> calculating
>>>> the lat/long if we aren't passed in files latin and longin. So
>>>> for the
>>>> OpenCL version I'll need to make latin and longin arrays ahead of
>>>> time
>>>> instead of calculating it in the loop.
>>>>
>>>> The problem is in rsunlib.c at line 250. How can I avoid this
>>>> pj_do_proj() call? I was thinking that because I have the lat/long
>>>> coordinates for all points, I can use that on lines 255& 256,
>>>> effectively changing G_projection() to return PROJECTION_LL and
>>>> avoiding going into the 'if' statement. I don't know if that will
>>>> work, though. I really don't know what's going on here enough to
>>>> feel
>>>> comfortable changing the calculation.
>>>>
>>>> Suggestions? Code?
>
>
> Hi Seth,
>
> Maybe Thomas Huld can answer this better than me, but just a small
> explanation how it should work.
>
> r.sun effectivelly needs latitude,longitude for every cell. So
> intention with latin/longin rasters was to get these values in case
> you don't have a projection defined in grass. If you have a
> cartesian projection defined in grass, you can get lat/lon on the
> fly (e.g. using pj_do_proj() or any other method). So if you are
> able to read the lat/lon values for every cell by other method then
> you can disable this call.
>
> Jaro
>
>>>
>>> I don't know the answer to this. But if no-one else does either,
>>> r.sun
>>> should be disabled. An error is preferable to silently producing
>>> wrong
>>> answers.
>>
>> For sure. I have added the authors in bcc who may have suggestions.
>>
>>> Using different mechanisms for projection in different places looks
>>> really suspicious. If there's a good reason for doing so, it
>>> should be
>>> clearly documented. If there isn't a good reason, it should be
>>> fixed.
>>> If no-one knows whether it's right or wrong, the module should be
>>> disabled until we do know.
>>
>> The first thing to do may be contacting the authors... done with
>> this email.
>>
>> Markus
>>
More information about the grass-dev
mailing list