Null values in attribute table get converted to 0 (zero) during v.to.rast

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Null values in attribute table get converted to 0 (zero) during v.to.rast

DanielV
Hi list,

I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.

Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?

For now I'll use r.null to fix this problem. But what if 0 is a valid value?

Cheers
Daniel

PS - Running Grass 7.6.1 on Ubuntu

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

Veronica Andreo
Hi Daniel,

I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/

Cheers,
Vero

El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
Hi list,

I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.

Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?

For now I'll use r.null to fix this problem. But what if 0 is a valid value?

Cheers
Daniel

PS - Running Grass 7.6.1 on Ubuntu
_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

Markus Metz-3


On Tue, Oct 29, 2019 at 7:40 PM Veronica Andreo <[hidden email]> wrote:
>
> Hi Daniel,
>
> I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/

that would require to change db_select_CatValArray on library level here
and here

I can't estimate the side effects of any changes, this is a widely used function, thus no easy fix. Please open a ticket.

Markus M

>
> Cheers,

> Vero
>
> El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
>>
>> Hi list,
>>
>> I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.
>>
>> Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?
>>
>> For now I'll use r.null to fix this problem. But what if 0 is a valid value?
>>
>> Cheers
>> Daniel
>>
>> PS - Running Grass 7.6.1 on Ubuntu
>> _______________________________________________
>> grass-user mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>
> _______________________________________________
> grass-user mailing list
> [hidden email]
> https://lists.osgeo.org/mailman/listinfo/grass-user
_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

Markus Metz-3
In reply to this post by Veronica Andreo


On Tue, Oct 29, 2019 at 7:40 PM Veronica Andreo <[hidden email]> wrote:
>
> Hi Daniel,
>
> I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/

easy solution: v.to.rast where="<attribute_column> is not null"

or the new PR #173
if an attribute value is null, the corresponding vector features will not be rasterized

Markus M

>
> Cheers,

> Vero
>
> El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
>>
>> Hi list,
>>
>> I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.
>>
>> Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?
>>
>> For now I'll use r.null to fix this problem. But what if 0 is a valid value?
>>
>> Cheers
>> Daniel
>>
>> PS - Running Grass 7.6.1 on Ubuntu
>> _______________________________________________
>> grass-user mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>
> _______________________________________________
> grass-user mailing list
> [hidden email]
> https://lists.osgeo.org/mailman/listinfo/grass-user
_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

Micha Silver-2

On 31/10/2019 22:20, Markus Metz wrote:


On Tue, Oct 29, 2019 at 7:40 PM Veronica Andreo <[hidden email]> wrote:
>
> Hi Daniel,
>
> I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/

easy solution: v.to.rast where="<attribute_column> is not null"

or the new PR #173
if an attribute value is null, the corresponding vector features will not be rasterized

Markus M


I'm not sure I agree with the approach that a polygon with missing attribute should become NULL. In my view, NULL should be used only for pixels not covered at all by any polygon.

Perhaps an additional input parameter "missing_attribute" so the user can choose a value to enter into the raster if the attribute is missing. If no parameter is supplied, and the chosen attribute column has missing values, I'd prefer that the script exit gracefully, with a message that a "missing_attribute" value is required.



>
> Cheers,
> Vero
>
> El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
>>
>> Hi list,
>>
>> I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.
>>
>> Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?
>>
>> For now I'll use r.null to fix this problem. But what if 0 is a valid value?
>>
>> Cheers
>> Daniel
>>
>> PS - Running Grass 7.6.1 on Ubuntu
>> _______________________________________________
>> grass-user mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>
> _______________________________________________
> grass-user mailing list
> [hidden email]
> https://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
-- 
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

Veronica Andreo
Hi Micha

El jue., 31 oct. 2019 a las 22:36, Micha Silver (<[hidden email]>) escribió:

On 31/10/2019 22:20, Markus Metz wrote:


On Tue, Oct 29, 2019 at 7:40 PM Veronica Andreo <[hidden email]> wrote:
>
> Hi Daniel,
>
> I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/

easy solution: v.to.rast where="<attribute_column> is not null"

or the new PR #173
if an attribute value is null, the corresponding vector features will not be rasterized

Markus M

I'm not sure I agree with the approach that a polygon with missing attribute should become NULL. In my view, NULL should be used only for pixels not covered at all by any polygon.

but in the resulting raster (in rasters in general), there's no difference, it's rather NULL or it has a value... it does not matter if the null comes from areas originally covered by a polygon or not... A different story might be if we go from raster to polygon...

Perhaps an additional input parameter "missing_attribute" so the user can choose a value to enter into the raster if the attribute is missing. If no parameter is supplied, and the chosen attribute column has missing values, I'd prefer that the script exit gracefully, with a message that a "missing_attribute" value is required.

yes, this could be a solution to keep track of where you had polygons, but then you would need to use r.null anyway, no? I try to think of use cases in which one uses a vector attribute to convert to raster, but then still needs to know where the polygons were... because, for example, to query a raster map with another raster map representing zones one would convert the vector of polygons using cat and not an attribute, no?

cheers,
Vero

> El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
>>
>> Hi list,
>>
>> I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.
>>
>> Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?
>>
>> For now I'll use r.null to fix this problem. But what if 0 is a valid value?
>>
>> Cheers
>> Daniel
>>
>> PS - Running Grass 7.6.1 on Ubuntu
>> _______________________________________________
>> grass-user mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>
> _______________________________________________
> grass-user mailing list
> [hidden email]
> https://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
-- 
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

Markus Metz-3


On Fri, Nov 1, 2019 at 12:11 AM Veronica Andreo <[hidden email]> wrote:

>
> Hi Micha
>
> El jue., 31 oct. 2019 a las 22:36, Micha Silver (<[hidden email]>) escribió:
>>
>>
>> On 31/10/2019 22:20, Markus Metz wrote:
>>
>>
>>
>> On Tue, Oct 29, 2019 at 7:40 PM Veronica Andreo <[hidden email]> wrote:
>> >
>> > Hi Daniel,
>> >
>> > I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/
>>
>> easy solution: v.to.rast where="<attribute_column> is not null"
>>
>> or the new PR #173
>> https://github.com/OSGeo/grass/pull/173
>> if an attribute value is null, the corresponding vector features will not be rasterized
>>
>> Markus M
>>
>> I'm not sure I agree with the approach that a polygon with missing attribute should become NULL. In my view, NULL should be used only for pixels not covered at all by any polygon.
>
> but in the resulting raster (in rasters in general), there's no difference, it's rather NULL or it has a value... it does not matter if the null comes from areas originally covered by a polygon or not...

I think it depends on the particular use case if it matters where a NULL raster value comes from: a polygon with empty attribute or no polygon at all for that cell.

>>
>> Perhaps an additional input parameter "missing_attribute" so the user can choose a value to enter into the raster if the attribute is missing. If no parameter is supplied, and the chosen attribute column has missing values, I'd prefer that the script exit gracefully, with a message that a "missing_attribute" value is required.

This can easily be done with existing tools:
- convert only those polygons with a valid attribute value: v.to.rast where="attribute is not null"
- replace missing attribute values with a valid value: v.db.update where="attribute is null", then v.to.rast

I'm changing my PR to issue a warning if empty attribute values are found and replaced with zero.

Markus M

>
> yes, this could be a solution to keep track of where you had polygons, but then you would need to use r.null anyway, no? I try to think of use cases in which one uses a vector attribute to convert to raster, but then still needs to know where the polygons were... because, for example, to query a raster map with another raster map representing zones one would convert the vector of polygons using cat and not an attribute, no?

>
> cheers,
> Vero
>>
>>
>> > El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
>> >>
>> >> Hi list,
>> >>
>> >> I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.
>> >>
>> >> Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?
>> >>
>> >> For now I'll use r.null to fix this problem. But what if 0 is a valid value?
>> >>
>> >> Cheers
>> >> Daniel
>> >>
>> >> PS - Running Grass 7.6.1 on Ubuntu
>> >> _______________________________________________
>> >> grass-user mailing list
>> >> [hidden email]
>> >> https://lists.osgeo.org/mailman/listinfo/grass-user
>> >
>> > _______________________________________________
>> > grass-user mailing list
>> > [hidden email]
>> > https://lists.osgeo.org/mailman/listinfo/grass-user
>>
>> _______________________________________________
>> grass-user mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>>
>> --
>> Micha Silver
>> Ben Gurion Univ.
>> Sde Boker, Remote Sensing Lab
>> cell: +972-523-665918
_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

Micha Silver-2

On 01/11/2019 9:38, Markus Metz wrote:


On Fri, Nov 1, 2019 at 12:11 AM Veronica Andreo <[hidden email]> wrote:
>
> Hi Micha
>
> El jue., 31 oct. 2019 a las 22:36, Micha Silver (<[hidden email]>) escribió:
>>
>>
>> On 31/10/2019 22:20, Markus Metz wrote:
>>
>>
>>
>> On Tue, Oct 29, 2019 at 7:40 PM Veronica Andreo <[hidden email]> wrote:
>> >
>> > Hi Daniel,
>> >
>> > I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/
>>
>> easy solution: v.to.rast where="<attribute_column> is not null"
>>
>> or the new PR #173
>> https://github.com/OSGeo/grass/pull/173
>> if an attribute value is null, the corresponding vector features will not be rasterized
>>
>> Markus M
>>
>> I'm not sure I agree with the approach that a polygon with missing attribute should become NULL. In my view, NULL should be used only for pixels not covered at all by any polygon.
>
> but in the resulting raster (in rasters in general), there's no difference, it's rather NULL or it has a value... it does not matter if the null comes from areas originally covered by a polygon or not...

I think it depends on the particular use case if it matters where a NULL raster value comes from: a polygon with empty attribute or no polygon at all for that cell.

>>
>> Perhaps an additional input parameter "missing_attribute" so the user can choose a value to enter into the raster if the attribute is missing. If no parameter is supplied, and the chosen attribute column has missing values, I'd prefer that the script exit gracefully, with a message that a "missing_attribute" value is required.

This can easily be done with existing tools:
- convert only those polygons with a valid attribute value: v.to.rast where="attribute is not null"
- replace missing attribute values with a valid value: v.db.update where="attribute is null", then v.to.rast

I'm changing my PR to issue a warning if empty attribute values are found and replaced with zero.


IMHO, that's probably the best way to deal with this.



Markus M

>
> yes, this could be a solution to keep track of where you had polygons, but then you would need to use r.null anyway, no? I try to think of use cases in which one uses a vector attribute to convert to raster, but then still needs to know where the polygons were... because, for example, to query a raster map with another raster map representing zones one would convert the vector of polygons using cat and not an attribute, no?
>
> cheers,
> Vero
>>
>>
>> > El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
>> >>
>> >> Hi list,
>> >>
>> >> I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.
>> >>
>> >> Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?
>> >>
>> >> For now I'll use r.null to fix this problem. But what if 0 is a valid value?
>> >>
>> >> Cheers
>> >> Daniel
>> >>
>> >> PS - Running Grass 7.6.1 on Ubuntu
>> >> _______________________________________________
>> >> grass-user mailing list
>> >> [hidden email]
>> >> https://lists.osgeo.org/mailman/listinfo/grass-user
>> >
>> > _______________________________________________
>> > grass-user mailing list
>> > [hidden email]
>> > https://lists.osgeo.org/mailman/listinfo/grass-user
>>
>> _______________________________________________
>> grass-user mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>>
>> --
>> Micha Silver
>> Ben Gurion Univ.
>> Sde Boker, Remote Sensing Lab
>> cell: +972-523-665918
-- 
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user
Reply | Threaded
Open this post in threaded view
|

Re: Null values in attribute table get converted to 0 (zero) during v.to.rast

DanielV
I was traveling so could not respond. So sorry to chime in a bit late. For me it was a bit counter intuitive that polygons with null attributes became zero in the finished raster. What if I had attributes with zero value in it?

I liked the idea of issuing a warning and using the `where` parameter.

Anyway, thanks for the help and fix

Cheers
Daniel

On Fri, Nov 1, 2019 at 12:33 PM Micha Silver <[hidden email]> wrote:

On 01/11/2019 9:38, Markus Metz wrote:


On Fri, Nov 1, 2019 at 12:11 AM Veronica Andreo <[hidden email]> wrote:
>
> Hi Micha
>
> El jue., 31 oct. 2019 a las 22:36, Micha Silver (<[hidden email]>) escribió:
>>
>>
>> On 31/10/2019 22:20, Markus Metz wrote:
>>
>>
>>
>> On Tue, Oct 29, 2019 at 7:40 PM Veronica Andreo <[hidden email]> wrote:
>> >
>> > Hi Daniel,
>> >
>> > I agree that if there's a NULL in the column, there should be NULL in the resulting raster. I suggest to open a ticket here: https://trac.osgeo.org/grass/
>>
>> easy solution: v.to.rast where="<attribute_column> is not null"
>>
>> or the new PR #173
>> https://github.com/OSGeo/grass/pull/173
>> if an attribute value is null, the corresponding vector features will not be rasterized
>>
>> Markus M
>>
>> I'm not sure I agree with the approach that a polygon with missing attribute should become NULL. In my view, NULL should be used only for pixels not covered at all by any polygon.
>
> but in the resulting raster (in rasters in general), there's no difference, it's rather NULL or it has a value... it does not matter if the null comes from areas originally covered by a polygon or not...

I think it depends on the particular use case if it matters where a NULL raster value comes from: a polygon with empty attribute or no polygon at all for that cell.

>>
>> Perhaps an additional input parameter "missing_attribute" so the user can choose a value to enter into the raster if the attribute is missing. If no parameter is supplied, and the chosen attribute column has missing values, I'd prefer that the script exit gracefully, with a message that a "missing_attribute" value is required.

This can easily be done with existing tools:
- convert only those polygons with a valid attribute value: v.to.rast where="attribute is not null"
- replace missing attribute values with a valid value: v.db.update where="attribute is null", then v.to.rast

I'm changing my PR to issue a warning if empty attribute values are found and replaced with zero.


IMHO, that's probably the best way to deal with this.



Markus M

>
> yes, this could be a solution to keep track of where you had polygons, but then you would need to use r.null anyway, no? I try to think of use cases in which one uses a vector attribute to convert to raster, but then still needs to know where the polygons were... because, for example, to query a raster map with another raster map representing zones one would convert the vector of polygons using cat and not an attribute, no?
>
> cheers,
> Vero
>>
>>
>> > El jue., 24 oct. 2019 a las 14:40, Daniel Victoria (<[hidden email]>) escribió:
>> >>
>> >> Hi list,
>> >>
>> >> I have a vector polygon map that I'm converting to raster. The attribute column that I process has some empty rows (no data / null). When I run v.to.rast, these empty rows become 0 (zero) on my resulting raster map.
>> >>
>> >> Shouldn't v.to.rast respect the empty attribute table and create null values for those polygons?
>> >>
>> >> For now I'll use r.null to fix this problem. But what if 0 is a valid value?
>> >>
>> >> Cheers
>> >> Daniel
>> >>
>> >> PS - Running Grass 7.6.1 on Ubuntu
>> >> _______________________________________________
>> >> grass-user mailing list
>> >> [hidden email]
>> >> https://lists.osgeo.org/mailman/listinfo/grass-user
>> >
>> > _______________________________________________
>> > grass-user mailing list
>> > [hidden email]
>> > https://lists.osgeo.org/mailman/listinfo/grass-user
>>
>> _______________________________________________
>> grass-user mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>>
>> --
>> Micha Silver
>> Ben Gurion Univ.
>> Sde Boker, Remote Sensing Lab
>> cell: +972-523-665918
-- 
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918
_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user

_______________________________________________
grass-user mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/grass-user