| 107 | |
| 108 | |
| 109 | bool DEMFilter::processOne(PointRef& point) |
| 110 | { |
| 111 | static std::vector<double> data; |
| 112 | static std::array<double, 2> pix; |
| 113 | |
| 114 | double x = point.getFieldAs<double>(Dimension::Id::X); |
| 115 | double y = point.getFieldAs<double>(Dimension::Id::Y); |
| 116 | double z = point.getFieldAs<double>(m_args->m_dim); |
| 117 | |
| 118 | bool passes(false); |
| 119 | |
| 120 | if (m_raster->read(x, y, data, pix) == gdal::GDALError::None) |
| 121 | { |
| 122 | double v = data[m_args->m_band-1]; |
| 123 | double lb = v - m_args->m_range.m_lower_bound; |
| 124 | double ub = v + m_args->m_range.m_upper_bound; |
| 125 | |
| 126 | |
| 127 | if ( z >= lb && z <= ub) |
| 128 | passes = true; |
| 129 | } |
| 130 | return passes; |
| 131 | } |
| 132 | |
| 133 | PointViewSet DEMFilter::run(PointViewPtr inView) |
| 134 | { |