<html><head></head><body><div>Hi PDAL community, I would like to propose a new feature for the <span>Assign filter. </span>This filter allows you assign a new value to a specific dimension. This is great but I think that it could have a new interesting feature.</div><div><span><br></span></div><div><span>My proposal is that you can define a mathematical expresion to assign the value. </span></div><div><span><br></span></div><div><span>For example:</span></div><div><span><br></span></div><div><span><span><div><span><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;"><span><span style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;"><div>{</div><div>      "type": "filters.assign",</div><div>      "assignment": "Z[-1000:1000]=$( 10 * [Z] )"</div><div>},</div><div>{<br></div></span></span></div><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">      "type": "filters.assign",</div><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">      "assignment": "Z[-1000:1000]=$( 10 * 2 + [Z] + (25 * [X]) )"</div><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">},</div><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;"></div></span>{</div><div>      "type": "filters.assign",</div><div>      "assignment": "Classification[0:10]=PointSourceId:$( [<span><span style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">PointSourceId] == 3</span></span> )"</div><div>},</div><div><span><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">{</div><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">      "type": "filters.assign",</div><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">      "assignment": "Classification[0:10]=Z:$( 10 * ([Classification]>=2 && [Classification]<=4) )"</div><div style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">},</div><div><br></div></span></div><div>The optional expression could be marked with a $(....) text. </div><div><br></div><div>I have implemented my own version in a simple manner. It supports the tipical calc operators ( * / + -  && || >= == != <= > < ) and "(...)" for priorizing them. You can write "[dimension_name]" to extract the attribute value of a dimension in the current point. Also you can define an optional dimension target, different of the first dimension that acts as filter, specifing it just after the "=" item.</div><div><br></div><div>For a fully calc parser (Including functions) I could use the amazing <a href="https://www.antlr.org/download.html" rel="nofollow" target="_blank">https://www.antlr.org</a>, but It would add a new dependency to the PDAL software. I think these simple operators already give a plus to this filter.</div><div><br></div><div><span>Any opinions?</span></div><div><span><span><span style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">If you agree I could try to create a pull request with my code.</span></span></span></div><div><span><span><span style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;"><br></span></span></span></div><div><span><br></span></div><div><span>Best regards</span></div><div><span><br></span></div><div><a href="https://github.com/ahuarte47" rel="nofollow" target="_blank">https://github.com/ahuarte47</a><span><br></span></div><div><span><span style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">Alvaro</span></span><br></div><div><span><br></span></div></span></span></div><div class="ydpc0079948yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px;"></div></body></html>