Creación de área de influencia: ejemplo de Java

Este ejemplo de Java muestra cómo utilizar la interfaz SOAP para que Geometry Service cree un área de influencia alrededor de un punto.

Para generar las clases de recibo de Geometry Service, consulte Generación de un código auxiliar

import com.mapinfo.midev.service.geometries.v1.MultiPolygon;
import com.mapinfo.midev.service.geometries.v1.Point;
import com.mapinfo.midev.service.geometries.v1.Pos;
import com.mapinfo.midev.service.geometry.v1.BufferRequest;
import com.mapinfo.midev.service.geometry.v1.BufferResponse;
import com.mapinfo.midev.service.geometry.ws.v1.GeometryService;
import com.mapinfo.midev.service.geometry.ws.v1.GeometryServiceInterface;
import com.mapinfo.midev.service.geometry.ws.v1.ServiceException;
import com.mapinfo.midev.service.units.v1.Distance;
import com.mapinfo.midev.service.units.v1.DistanceUnit;

import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.MessageContext;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public final class GeometryServiceDriver {

	// the number of line segments that will compose the buffer
	private static final Integer RESOLUTION = 64;

	// username with the authority to call the Geometry service
	private static final String USERNAME = "admin";

	// password of the caller
	private static final String PASSWORD = "admin";

	public static void main(String[] args) throws ServiceException {

		// get the endpoint class
		GeometryServiceInterface geometryServiceInterface = new GeometryService().getGeometryServiceInterface();

		// if authentication is enabled in Spectrum then the following is required
		Map<String, Object> requestContext = ((BindingProvider)geometryServiceInterface).getRequestContext();
		requestContext.put(BindingProvider.USERNAME_PROPERTY, USERNAME);
		requestContext.put(BindingProvider.PASSWORD_PROPERTY, PASSWORD);

		BufferRequest bufferRequest = new BufferRequest();

		// point to buffer
		{
			Point point = new Point();
			point.setSrsName("epsg:4326");
			Pos pos = new Pos();
			pos.setX(-75.66);
			pos.setY(47.88);
			point.setPos(pos);

			bufferRequest.setGeometry(point);
		}

		// buffer distance
		{
			Distance bufferDistance = new Distance();
			bufferDistance.setUom(DistanceUnit.MILE);
			bufferDistance.setValue(12.0);
			bufferRequest.setDistance(bufferDistance);
		}

		bufferRequest.setResolution(RESOLUTION);

		BufferResponse bufferResponse = geometryServiceInterface.buffer(bufferRequest);

		MultiPolygon bufferGeometry = (MultiPolygon) bufferResponse.getGeometry();

		// do what you want with the bufferGeometry ...

	}

}