Package com.esri.hadoop.hive

Source Code of com.esri.hadoop.hive.ST_Envelope

package com.esri.hadoop.hive;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hive.pdk.HivePdkUnitTest;
import org.apache.hive.pdk.HivePdkUnitTests;

import com.esri.core.geometry.Envelope;
import com.esri.core.geometry.SpatialReference;
import com.esri.core.geometry.ogc.OGCGeometry;

@Description(
  name = "ST_Envelope",
  value = "_FUNC_(ST_Geometry) - the envelope of the ST_Geometry",
  extended = "Example:\n" +
  "SELECT _FUNC_(ST_LineString(0,0, 2,2)) from src LIMIT 1;  -- POLYGON ((0 0, 2 0, 2 2, 0 2, 0 0))\n" +
  "SELECT _FUNC_(ST_Polygon(2,0, 2,3, 3,0)) from src LIMIT 1;  -- POLYGON ((2 0, 3 0, 3 3, 2 3, 2 0))\n"  +
  "OGC Compliance Notes : \n" +
  " In the case of a point or a vertical or horizontal line," +
  " ST_Envelope may either apply a tolerance or return an empty envelope."
  )
@HivePdkUnitTests(
  cases = {
    @HivePdkUnitTest(
      query = "select ST_EnvIntersects(ST_LineString(0,0, 1,1), ST_LineString(1,3, 2,2)) from onerow",
      result = "false"
      ),
    @HivePdkUnitTest(
      query = "select ST_EnvIntersects(ST_LineString(0,0, 2,2), ST_LineString(1,0, 3,2)) from onerow",
      result = "true"
      ),
    @HivePdkUnitTest(
      query = "select ST_EnvIntersects(null, ST_LineString(0,0, 1,1)) from onerow",
      result = "null"
      )
  }
)

public class ST_Envelope extends ST_GeometryProcessing {
  static final Log LOG = LogFactory.getLog(ST_Envelope.class.getName());

  public BytesWritable evaluate(BytesWritable geometryref)
  {
    if (geometryref == null || geometryref.getLength() == 0) {
      LogUtils.Log_ArgumentsNull(LOG);
      return null;
    }

    OGCGeometry ogcGeometry = GeometryUtils.geometryFromEsriShape(geometryref);
    if (ogcGeometry == null){
      LogUtils.Log_ArgumentsNull(LOG);
      return null;
    }

    int wkid = GeometryUtils.getWKID(geometryref);
    SpatialReference spatialReference = null;
    if (wkid != GeometryUtils.WKID_UNKNOWN) {
      spatialReference = SpatialReference.create(wkid);
    }
    Envelope envBound = new Envelope();
    ogcGeometry.getEsriGeometry().queryEnvelope(envBound);
    return GeometryUtils.geometryToEsriShapeBytesWritable(OGCGeometry.createFromEsriGeometry(envBound,
                                  spatialReference));
  }

}
TOP

Related Classes of com.esri.hadoop.hive.ST_Envelope

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.