laptop and a wrench

Bogue

IPolyline query PointAndDistance method using the Java API fails.

Dernière publication: August 25, 2014 No Product Found
Numéro d’ID de bogue NIM001090
EnvoiFebruary 10, 2006
Dernière modificationJune 5, 2024
S’applique àNo Product Found
Version trouvée9.1
Langue du programmeJava
Version de correction9.2
StatutFixed

Solution de contournement

/* * PolylineTest2.java * * Created on February 10, 2006, 10:46 AM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package com.esri.dsg.test;import com.esri.arcgis.system.ServerInitializer;import com.esri.arcgis.server.ServerConnection;import com.esri.arcgis.server.IServerObjectManager;import com.esri.arcgis.server.IServerContext;import com.esri.arcgis.carto.MapServer;import com.esri.arcgis.carto.MapServerInfo;import com.esri.arcgis.carto.MapDescription;import com.esri.arcgis.carto.ImageType;import com.esri.arcgis.carto.ImageDisplay;import com.esri.arcgis.carto.ImageDescription;import com.esri.arcgis.carto.IMapImage;import com.esri.arcgis.carto.IMap;/** * * @author jami2651 */public class PolylineTest2 { private ServerConnection _serverConnection; private ServerInitializer _serverInitializer; private IServerContext _serverContext; private MapServer _mapServer; private MapServerInfo _mapServerInfo; private MapDescription _mapDescription; private ImageType _imageType; private ImageDisplay _imageDisplay; private ImageDescription _imageDescription; private IMapImage _mapImage; private IMap _map; /** Creates a new instance of PolylineTest2 */ public PolylineTest2() { init(); } public void init(){ try{ _serverInitializer = new ServerInitializer(); _serverInitializer.initializeServer(); _serverConnection = new ServerConnection(); _serverConnection.connect("oceanshores"); IServerObjectManager serverObjectManager = _serverConnection.getServerObjectManager(); _serverContext = serverObjectManager.createServerContext("PortlandStreets", "MapServer"); _mapServer = new MapServer(_serverContext.getServerObject()); _map = _mapServer.getMap(_mapServer.getDefaultMapName()); _mapServerInfo = new MapServerInfo(_mapServer.getServerInfo(_mapServer.getDefaultMapName())); _mapDescription = new MapDescription(_mapServerInfo.getDefaultMapDescription()); _imageDescription = new ImageDescription(_serverContext.createObject("esricarto.ImageDescription")); _imageType = new ImageType(_serverContext.createObject("esricarto.ImageType")); _imageDisplay = new ImageDisplay(_serverContext.createObject("esricarto.ImageDisplay")); _imageType.setFormat(com.esri.arcgis.carto.esriImageFormat.esriImageJPG); _imageType.setReturnType(0); _imageDisplay.setHeight(450); _imageDisplay.setWidth(500); _imageDisplay.setDeviceResolution(96.0); _imageDescription.setType(_imageType); _imageDescription.setDisplay(_imageDisplay); } catch(Exception ex){ ex.printStackTrace(); } } public void queryPoint(){ try{ com.esri.arcgis.carto.FeatureLayer roadsLayer = new com.esri.arcgis.carto.FeatureLayer(_map.getLayer(0)); com.esri.arcgis.geodatabase.IFeatureClass featureClass = roadsLayer.getFeatureClass(); com.esri.arcgis.geodatabase.IFeature foundFeature = featureClass.getFeature(5416); com.esri.arcgis.geometry.IGeometry lineShape = foundFeature.getShape(); com.esri.arcgis.geometry.Polyline polyline = new com.esri.arcgis.geometry.Polyline(lineShape); com.esri.arcgis.geometry.IPoint fromPoint = polyline.getFromPoint(); com.esri.arcgis.geometry.IPoint toPoint = polyline.getToPoint(); double[] distanceAlongCurve = {0.0}; double[] distanceFromCurve = {0.0}; boolean[] rightSide = {false}; com.esri.arcgis.geometry.Point inPoint = new com.esri.arcgis.geometry.Point(_serverContext.createObject(com.esri.arcgis.geometry.Point.getClsid())); inPoint.setX(7640319.87); inPoint.setY(687584.49); com.esri.arcgis.geometry.IPoint outPoint = polyline.returnNearestPoint(inPoint, com.esri.arcgis.geometry.esriSegmentExtension.esriNoExtension); System.out.println("Out X: " + outPoint.getX()); System.out.println("Out Y: " + outPoint.getY()); double distanceFromInPoint = polyline.returnDistance(inPoint); System.out.println("Distance From In Point: " + distanceFromInPoint); System.out.println("Total Polyline Length: " + polyline.getLength()); boolean[] happened = new boolean[10]; int[] newPartIndex = new int[10]; int[] newSegmentIndex = new int[10]; polyline.splitAtPoint(outPoint, true, true, happened, newPartIndex, newSegmentIndex); System.out.println("Segment Count: " + polyline.getSegmentCount()); System.out.println("New Segment Length from FromPoint: " + polyline.getSegment(0).getLength()); System.out.println("New Segment Length from ToPoint: " + polyline.getSegment(1).getLength()); } catch(Exception ex){ ex.printStackTrace(); } } public static void main(String [] args){ PolylineTest2 pt = new PolylineTest2(); pt.queryPoint(); } }

Étapes pour reproduire

ID de bogue: NIM001090

Logiciel:

  • No Product Found

Recevoir une notification lorsque le statut d’un bogue change

Télécharger l’application Esri Support

En savoir plus sur ce sujet

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement