SuperMap GIS Basic Product Components SIG Colección de preguntas frecuentes (2)

SuperMap GIS Basic Product Components SIG Colección de preguntas frecuentes (2)

[iObjects for Spark] ¿Cómo completar los parámetros para leer GDB?
[Solución] Consulte el siguiente ejemplo: val GDB_params = new util.HashMap String, java.io.Serializable GDB_params.put(FeatureRDDProviderParams.InputFile.key, “F:\test.gdb”) GDB_params.put(FeatureRDDProviderParams.ProviderType. clave, "GDB")

【iObjects.Net】¿Cómo configurar el símbolo número 303 en la biblioteca de símbolos de punto de configuración de código?
[Solución] La interfaz clave es MarkerSymbolID, el código específico es el siguiente:

 // 实例化一个点几何对象,并对其进行风格设置
    GeoStyle geoStyle_P = new GeoStyle();
    geoStyle_P.MarkerAngle = 14.0;
    geoStyle_P.MarkerSize = new Size2D(10, 10);
    geoStyle_P.MarkerSymbolID = 303;
    GeoPoint geoPoint = new GeoPoint();
    geoPoint.X = 100.0;
    geoPoint.Y = 100.0;
    geoPoint.Style = geoStyle_P;

[iObjects Java] [11.0.1] Me gustaría pedirle a la interfaz de intersección de objetos que intersecte de la clase de operación de geometría básica Geometrist del componente iObjects Java, al pasar un objeto de línea con solo 2 puntos de intersección, el resultado devuelto es nulo.
[Causa del problema] La interfaz Geometrist.intersect solo está diseñada para admitir que el tipo de objeto geométrico devuelto sea el mismo que el de entrada.

[iObjects C++] [10.2.1] [11.0.0] [11.0.1] ¿Cuál es la razón por la que la fuente de datos devuelta apunta a un puntero nulo nullptr cuando el código de iObjects C++ no puede abrir la fuente de datos web de Tiantu?
[Causa del problema] Puede haber las siguientes dos razones por las que no se pudo abrir la fuente de datos del servicio de mapas de Tiandi basada en el componente iObjects C++. Se recomienda verificar uno por uno: 1. Verifique si se usa el tipo UGEngineType ::
MapWorldMaps , que ha quedado en desuso
2. El proyecto iObjects C++ Ya sea que dependa del directorio \bin\bind_x64, faltan algunos archivos de biblioteca dependientes necesarios en el directorio \bin\bind_x64.
[Solución] Por las dos razones anteriores, se recomienda realizar los siguientes cambios:
1. Cambie el tipo UGEngineType::MapWorldMaps a UGEngineType::tipo de motor de origen de datos WEB
2. Cambie el directorio dependiente \bin\bind_x64 a \bin directorio \bin_x64.

【iObjects Java】【10.2.1】¿Cómo genera el componente Java de iObjects caché de terreno en formato .terrainz?
[Solución] Use la clase CacheBuilderTIN, establezca el tipo de almacenamiento en el tipo original (setStoreType(StorageType.Original)) y habilite la compresión (setCompressed(true)) para generar un caché de terreno en formato .terrainz.

[UE] En Editor, ¿cómo usar este modo de edición SuperMapEdMode?
[Causa del problema] Al explorar datos en el modo de edición, el modo SuperMapEdMode puede realizar operaciones GIS
[Solución] El complemento admite operaciones de cámara GIS en el modo de edición UE. Busque el ícono de modo en la barra de herramientas, haga clic para expandir, puede ver la opción SuperMapEdMode a continuación, verifíquela. De vuelta a la escena, puede usar el mouse para rotar, desplazar y hacer zoom en la escena, etc.

[UE] Los componentes en la capa de caché cargados por UE tienen atributos de categoría. Si desea reemplazar un componente de una categoría con un material directamente de acuerdo con el atributo, ¿cómo lograrlo?
[Causa del problema] Hay dos métodos en UE para reemplazar materiales conocidos con materiales de UE en lotes. Uno es guardar la capa y modificar directamente la relación del material en LayerInfo; el otro es reemplazar la función del material en la escena del complemento de UE. .
[Solución]
1. Guarde la capa, abra la ruta del proyecto \Content\LayerInfo\map\LayerInfo.json, copie y cite el material en UE y péguelo en la posición del material asociado. La relación de posición se muestra en la Figura 2 Active la detección de colisión, haga clic con el botón derecho en la
capa, abra el panel de propiedades, busque "Embellecimiento de datos-Reemplazar material", haga clic en el objeto modelo con el mouse, seleccione un material requerido, haga clic con el botón derecho en "Copiar referencia" y pegue el resultado copiado en la ruta de reemplazo para el reemplazo.

[iObject .net] Configurar mapControl.Action = Action.CreateLine no tiene efecto ¿por qué?
[Solución] Antes de cambiar el estado de operación del mapa a dibujo, primero debe configurar MapControl.TrackMode

[iObjects java] ¿Cómo obtener las coordenadas del punto central del modelo en iObjects java?
[Solución] Después de obtener el geomodelo del objeto modelo, obtenga el cuadro delimitador a través de geomodel.getBoundingBox. Luego obtenga el punto 3D central Point3D a través de BoundingBox.getCenter.

[iObjects java] ¿Cómo ver el tipo de un campo de un conjunto de datos en un componente de Java?
[Solución] El tipo de campo puede ser devuelto por dataset.recordset.getFieldInfos().get("field name").getType()

[iObjects Java] ¿Cómo traducir y rotar objetos geométricos en componentes Java?
[Solución] Geometry.offset(doble dx, doble dy) traduce el objeto geométrico; Geometry.rotate(Point2D basePoint, double angle) rota el objeto geométrico, donde los efectos de traslación y rotación son como texturas

[iObject JAVA] [10.2.1] Se informó un error al conectarse a la base de datos de DM, desconectado de la máquina virtual de destino, dirección: '127.0.0.1:XXX', transporte: 'socket'. [Causa del problema] Hay un problema con la
versión 2023 de la propia dll. La versión del componente es 11.0.1
[Solución] La versión V8-2023 de DM informa un error y la versión V8-2020 de la dll de DM se puede usar normalmente.

[iObjects Python] ¿Dónde se almacena el modelo de ejemplo de detección de objetos en el paquete de recursos de aprendizaje automático?
[Solución] Almacenado en el directorio resources_ml\model\obj_det_plane_car_ship_cascade, el archivo obj_det_plane_car_ship_cascade.sdm

[iObjects for Spark] ¿Cómo utiliza la herramienta de línea de comandos un clúster externo?
[Solución] Utilice --master para especificar el clúster para ejecutar tareas y --conf para especificar otras configuraciones de chispa utilizadas para la ejecución de tareas, como: --master spark://master:7077 --conf spark.driver.host =192.168.12.34 --conf chispa.ejecutor.memoria=16g

[iObjects for Spark] ¿Cómo se almacenan los elementos en DSFFeatureRDD?
[Solución] Al establecer un índice de cuadrícula o un índice de árbol cuádruple, los objetos que caen en el mismo índice se vuelven a dividir en particiones. Los elementos en las particiones se almacenan repetidamente. Si una característica abarca varias particiones, cada partición tiene una copia de el objeto de función para que los objetos que están espacialmente dentro de la misma extensión estén en el mismo nodo

[iObjects Java] En MapcacheBuilder, la compilación falló y se configuraron los parámetros de corte de la imagen. Este método informa falso y no especifica qué parámetro informa el error. ¿Cuál puede ser la razón?
[Causa del problema] Al cortar una imagen, es necesario abrir la fuente de datos en modo de solo lectura.
[Solución] datasourceInfo.setReadOnly(true); si la fuente de datos se abre en modo de solo lectura, es verdadera, de lo contrario, es falsa. Para obtener más información, consulte el mapa en el documento de ayuda en línea.imagen

[iObjects Java] Después de cambiar la máquina, este problema ocurre cuando el proyecto se está ejecutando: java.lang.UnsatisfiedLinkError: com.supermap.data.EnvironmentNative.jni_InitEnvironment()V... ¿Cuál es el motivo?
[Causa del problema] Errores causados ​​por variables de entorno.
[Solución] Compruebe si la variable de entorno es correcta y está colocada al principio de la ruta. Si está desarrollada por IDEA, debe establecer la ruta Java de la ruta en Variables de entorno en Configuración de ejecución

[iObjects Java] ¿Cómo crear una fuente de datos de tipo memoria y crear un nuevo conjunto de datos en ella?
[Causa del problema] El método de almacenamiento de la fuente de datos temporal es el mismo que el de la fuente de datos UDB de tipo de archivo normal, pero la ubicación de almacenamiento es diferente y la ubicación de almacenamiento de la fuente de datos temporal está en la memoria.
[Solución] Cree una nueva fuente de datos de memoria, el código específico es el siguiente:

DatasourceConnectionInfo info = new DatasourceConnectionInfo();
		// 设置数据源存储位置为内存中,类型为UDB
		// Set the location of the datasource to the memory, in the type of UDB.
		info.setServer(":memory:");
		info.setEngineType(EngineType.UDB);

Puede consultar el programa de muestra MemoryDatasource en el paquete de instalación completo, como se muestra en el mapa del paquete de instalación.

imagen

【iObject.NET】¿Cómo dividir un polígono en múltiples polígonos por segmento de línea?
[Solución] Puede usar el operador de recorte en el análisis de superposición para implementar OverlayAnalyst.Clip

[iObjects Java] [10.2.1] Me gustaría pedirle al componente iObjects Java que genere el caché de terreno TIN. Después de configurar la capa de inicio y la capa final, se encuentra que el caché de terreno TIN de todos los niveles aún se genera durante el proceso de generación ¿Cuál es la razón?
[Causa del problema] En el proceso de generación de caché de terreno TIN, la red triangular se genera a partir de la capa más fina y luego se simplifica a la capa superior a su vez. Después de generar la memoria caché de terreno TIN final, los datos de la memoria caché TIN desde la capa de inicio establecida hasta el rango de la capa final se conservarán y los datos de la memoria caché de terreno TIN en otros niveles se eliminarán.

【iObjects C++】【11.0.1】¿Cómo importar y exportar archivos de datos KML para los componentes de iObjects C++ y qué interfaz se debe usar?
[Solución] La clase UGC::UGDataExchange se proporciona en el componente iObjects C++ para importar y exportar datos KML a través de las interfaces de importación (const UGImportParams &importParams) y exportación (const UGExportParams &exportParams).

【iObjects .NET】【10.2.1】【11.0.1】¿Cómo mostrar el objeto de superficie vectorial 3D (GeoRegion3D) en la capa de seguimiento (TrackingLayer) de la escena 3D del componente iObjects .NET?
[Causa del problema] La capa de seguimiento (TrackingLayer) no puede establecer AltitudeMode en ClampToObject a través del estilo de capa.
[Solución] Establezca directamente AltitudeMode en el modo ClampToObject para el estilo 3D (GeoStyle3D) del objeto de característica del área vectorial 3D (GeoRegin3D) agregado a la capa de seguimiento (TrackingLayer).

【iObjects .NET】¿Pueden los componentes de iObjects .NET cargar los servicios en línea de Baidu?
[Solución] Sí. El código clave es el siguiente:

datasourceConnetionInfo.Server = "https://map.baidu.com/";
datasourceConnetionInfo.EngineType = EngineType.BaiduMaps;
datasourceConnetionInfo.Alias = "baidu";
workspace.Datasources.Open(datasourceConnetionInfo);

[iObjects .NET] ¿Es posible cargar los servicios en línea de AutoNavi en el componente iObjects .NET?
[Solución] Sí. El código clave es el siguiente:

datasourceConnetionInfo.Server = "https://amap.com/";
datasourceConnetionInfo.EngineType = EngineType.GaoDeMaps;
datasourceConnetionInfo.Alias = "gaode";
workspace.Datasources.Open(datasourceConnetionInfo);

[iObjects .NET] Datos 3D->herramientas de modelo->extracción de atributos, ¿dónde está la interfaz para extraer el número de vértices? [Solución] Parámetros
del método Model.GetInfo (int lod, ref ValueType vertexCount, ref ValueType TriangleCount) : lod (Tipo: System.Int32): el nivel LOD especificado, si el nivel LOD del modelo es 0, el valor debe ser - 1. vertexCount (Tipo: System.ValueType): especifica el número de vértices. TriangleCount (Tipo: System.ValueType): especifica el número de triángulos. El modelo se obtiene por:



GeoModel3D geoModel3D = recordset.GetGeometry() as GeoModel3D;
Model model = geoModel3D.Model;

[iObjects .NET] ¿Qué interfaz se usa para dividir el modelo?
[Solución] Dividir el esqueleto del modelo:

ModelBuilder3D.SplitSkeleton(Model modelSrc,Model modelResult,bool bVertexPositionConsidered)

Parámetros:
modelSrc (Tipo: SuperMap.Data.Model): el objeto del modelo de origen que se dividirá
modelResult (Tipo: SuperMap.Data.Model): el modelo de resultado
bVertexPositionConsidered (Tipo: System.Boolean): si considerar la posición del vértice cuando la división
devuelve Valor: devuelve verdadero si la división del esqueleto es exitosa y devuelve falso si la división del esqueleto falla.

【iObjects.NET】¿Cuál es la diferencia entre el sistema de coordenadas del mapa y el sistema de coordenadas de la pantalla en MapControl?
[Solución] El origen de las coordenadas del sistema de coordenadas del mapa es la esquina inferior izquierda, el valor de X aumenta en la dirección correcta y el valor de Y aumenta en la dirección hacia arriba; el origen de las coordenadas del sistema de coordenadas de la pantalla está en la esquina superior izquierda , y el valor de X aumenta en la dirección correcta, el valor de Y aumenta en la dirección hacia abajo.

[iObjects.NET] Establezca la propiedad MapControl.Action en la constante Create** al editar objetos de punto, línea y área. ¿Por qué a veces falla y cuál podría ser la razón?
[Solución]
1. Cuando ocurre una falla, primero verifique si el mapa tiene una capa editable, si no hay una capa editable, la configuración fallará.
2. Si no desea dibujar en la capa normal pero necesita dibujar objetos temporales, configure la propiedad TrackMode de MapControl antes de configurar la Acción.
3. Si el tipo de la capa editable actual es diferente del tipo del objeto de dibujo, también puede haber fallas. Ambos deben ser consistentes

[iObjects Java] No se puede ver el resultado de la inclinación en la base de datos
[Razón del problema] La conversión de proyección falla porque el
parámetro de proyección no está configurado. Los parámetros de transformación del marco de referencia de transformación de proyección no necesitan configurar ningún parámetro, y luego use ObliquePhotogrammetryBuilder.setTargetCoordSysTransParameter(CoordSysTransParameter) para establecer los parámetros de transformación de proyección, y otros pasos pueden simular los parámetros de almacenamiento de inclinación del escritorio

[iObjects Java] ¿Cuál es el motivo de la falla al conectarse a la fuente de datos de Oracle?
[Causa del problema] La variable de entorno del cliente de Oracle no está configurada
[Solución] Agregue la ruta de instalación del cliente de Oracle en las variables de entorno de iDea

[UE] ¿Cómo agrega dinámicamente el front-end de transmisión de píxeles los datos renderizados (tuberías, modelos de precisión, etc.) en UE?
[Solución] Debe copiar el archivo layerinfo.json de la relación coincidente en la misma ruta de la carpeta de empaquetado y luego cargar los datos embellecidos cuando se ejecute de nuevo. También se puede cargar antes del empaquetado para evitar agregar datos cada vez que se ejecuta el exe;

[UE] Después de que el nivel se está ejecutando, la operación del mouse no se puede realizar
[Solución]

  1. Comprueba si el modo de juego está configurado en PlaneGameMode.
  2. Compruebe si la relación de asignación de entrada se importa en la configuración del proyecto.
  3. Compruebe si el parámetro de atributo del actor principal de SuperMap ha seleccionado un valor y, en su lugar, debe deshabilitarse.

【iObjects for Spark】¿Cómo usar el análisis de búfer?
[Solución] Consulte el siguiente código:

import com.supermap.bdt.analyst.vector.cpp._
val rdd = readFromUdbx("Buffer","line_3")
val bufferParam = new BufferParam(20,20,LinearUnit.Meter,BufferEnd.Round,false,10)
val result = BufferAnalyst(rdd,bufferParam)

[iObjects for Spark] ¿Cómo calcular el área de un objeto geométrico en un conjunto de características?
[Solución] Puede consultar el siguiente código:

import com.supermap.bdt.analyst.vector.cpp.CalculateArea
//设置结果数据中用于保存面积的字段名
val fieldname="Area"
val featurerdd1 = CalculateArea.apply(featurerdd,fieldname)

[iObjects for Spark] ¿Cómo hacer estadísticas de histograma en tif?
[Solución] Puede consultar el siguiente código:

val Path = "/jw/JingjinTerrain.tif"
val rasterRDD = RasterRDDProvider.readGeoTiff(sc, Path, TileSize.T512)
//对栅格数据进行直方图统计,参数分别为:栅格RDD、直方图分组数,待统计的波段索引
val res1 = Histogram(rasterRDD,40,0)

[UE] Después de agregar la capa de servicio de datos, los datos locales no se muestran
cuando se cargan [Causa del problema] Al cargar el servicio de datos, el caché local generado es incorrecto, lo que hace que los datos no se muestren
[Solución] Método: después de limpiar el caché local, recargar los datos.
Método de limpieza: ingrese "%temp%" en la barra de direcciones del explorador de archivos y presione Entrar; luego, seleccione la carpeta Local,
busque la carpeta SuperMap y elimine los archivos de caché en Caché.

[UE] Al realizar la función de renderizado en la nube, el nombre '-AudioMixer' especificado en el cuadro de destino del error no es válido
[Solución] Configuración de parámetros:
1. Parámetros de inicio adicionales: " -AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888";
2. Haga clic derecho en el acceso directo, abra sus propiedades y agregue los parámetros anteriores después del "objetivo" del acceso directo (debe tenerse en cuenta que debe agregarse después de .exe). Ver pegatinas:imagen

[iObjects Java] Hay un conjunto de datos con coordenadas de un punto y una superficie, ¿cómo juzgar si el punto está dentro de alguna superficie en el conjunto de datos?
[Causa del problema] La clase de operación geométrica básica admite las siguientes operaciones: recorte, intersección, borrado, fusión, diferencia simétrica, actualización e identidad. canContain puede determinar si el objeto de geometría de búsqueda contiene el objeto de geometría de búsqueda.
[Solución] Use canContain en la clase Geometrist para juzgar si el objeto de geometría de búsqueda geometríaSearch contiene el objeto de geometría de búsqueda geometríaObjetivo y devuelva verdadero si lo contiene. Por ejemplo:

System.out.println(Geometrist.canContain(geometrySearch, geometryTarget));

[iObjects Java] Una polilínea que requiere 50 nodos solo necesita 5 nodos después de suavizar ¿Hay alguna forma de suavizar la ruta?
【Solución】Método de remuestreo de remuestreo, el remuestreo de objetos geométricos consiste en eliminar algunos nodos de acuerdo con ciertas reglas, para lograr el propósito de simplificar los datos, los resultados pueden ser diferentes debido al uso de diferentes métodos de remuestreo. SuperMap proporciona dos métodos para volver a muestrear objetos geométricos, a saber, el método de apertura y el método Douglas-Puke.

[iObjects Java] Hay datos de terreno en el espacio de trabajo, ¿por qué la altitud obtenida siempre es 0?
[Razón del problema] Se requiere la premisa de la escena visual. Si hay datos del terreno, devuelva la altitud de un punto en el suelo, de lo contrario, devuelva 0.0 si no hay datos del terreno. Independientemente del factor de extensión del terreno, la altura del terreno devuelta es siempre la altura real del terreno.
[Solución] Configure la escena para agregar datos de terreno para obtener la altura, el código específico es el siguiente

public void TestSceneGetAltitude(Scene sceneObject) {
       // 进行三维场景的设置,添加地形数据设置可见
       sceneObject.getAtmosphere().setVisible(true);     
       TerrainLayers terrainLayers = sceneObject.getTerrainLayers();
       TerrainLayer terrainLayer =terrainLayers.add("./GlobalTerrain.sct", true);
       terrainLayer.setVisible(true);

       // 返回地面上某点的海拔高度
       double altitudeValue = sceneObject.getAltitude(120, 40);
       System.out.println("某点海拔高度为:" + altitudeValue);
}

【iObjects.NET】¿Cómo implementa el componente correspondiente la "consulta de polígono" en la escena en iDesktop?
[Solución] La idea principal de implementación tiene los siguientes pasos clave:
1. Dibuje el objeto de superficie en la capa de seguimiento de la escena
2. En el evento de introducción del dibujo de la capa de seguimiento, obtenga el objeto de superficie y luego linealice el objeto de superficie Estirar;
3. Realice una consulta de intersección en el cuerpo del modelo obtenido y los registros de capa, y el alcance incluye la colección de objetos smid, para obtener más detalles, consulte la siguiente captura de pantalla:

imagen

【iObjects.NET】¿Cómo realizar la transformación de proyección en un solo objeto geométrico?
[Solución] Interfaz clave: CoordSysTranslator.Convert, en este método, hay varios métodos de devolución de llamada, que admiten la conversión de proyección de objetos de colección:

Convert(Geometry, PrjCoordSys, PrjCoordSys, CoordSysTransParameter,CoordSysTransMethod) 

De acuerdo con el sistema de coordenadas proyectadas de origen y el sistema de coordenadas proyectadas de destino, el objeto geométrico se proyecta y transforma, y ​​el resultado cambiará directamente el objeto geométrico de origen.

【iObjects C++】【11.0.1】Después de usar el componente iObjects C++ para abrir el espacio de trabajo e insertar la fuente de datos, ¿cómo resolver el problema de generar la información de excepción que el archivo del espacio de trabajo ya existe después de llamar directamente a la interfaz de guardado del espacio de trabajo para guardar?
[Motivo del problema] Al abrir la información de conexión del espacio de trabajo, el valor del campo m_bFailIfExists no está configurado. Válido para espacios de trabajo de tipo archivo, si el archivo ya existe, si se devuelve el error, el valor predeterminado es verdadero.
[Solución] Al abrir la información de conexión del espacio de trabajo, establezca el valor del campo m_bFailIfExists en falso y la ejecución se realizará correctamente cuando se guarde el espacio de trabajo.

【iObjects C++】【11.0.1】 La capa de seguimiento de componentes de iObjects C++ (UGC::UGTrackingLayer) proporciona la interfaz SetSelectable para establecer si es seleccionable, pero ¿por qué los elementos de la capa de seguimiento no se pueden seleccionar después de la configuración? ¿Cómo realizar la selección de características geométricas en la capa de seguimiento?
[Causa del problema] La interfaz SetSelectable proporcionada por la capa de seguimiento (UGC::UGTrackingLayer) ha quedado obsoleta Actualmente, el componente iObjects C++ no admite la selección de elementos geométricos en la capa de seguimiento.
【Solución】 Si necesita realizar el efecto de selección de elementos geométricos en la capa de seguimiento (UGC::UGTrackingLayer), se recomienda consultar el siguiente proceso: (1) Agregue
los elementos geométricos en la capa de seguimiento al conjunto de datos temporal;
(2) En Al hacer clic para seleccionar un elemento geométrico en el mapa, se construye un elemento de punto de acuerdo con la posición del clic del mouse; (
3) La consulta espacial se realiza a partir del conjunto de datos temporales y el elemento de punto construido, y el resultado de la consulta es el elemento seleccionado;
(4) Modificar la capa de seguimiento Seleccione el estilo del elemento para realizar el estado resaltado.

[iObjects Java] El escritorio puede importar hojas de Excel, pero la importación de componentes es distorsionada. ¿Cuál es el motivo?
[Motivo del problema] La importación de datos en formato Excel mediante el componente Java de iObjects requiere la autorización de la biblioteca de terceros de Office
.

[iObjects Java] ¿Cómo obtener la escena en el espacio de trabajo sin usar SceneControl en SuperMap iObjects java?
[Solución] Escena escena = nueva escena (espacio de trabajo); luego obtenga el contenido de una escena existente en el espacio de trabajo, use String xml = espacio de trabajo.getScenes().getSceneXML(); y finalmente asigne el contenido a la escena definida: escena. de XML (xml).

【iObjects Java】¿Cómo utilizar licencias tipo Web en componentes Java?
[Solución] Use la clase BSLicense en el componente Java para incrustar el segmento de código del inicio de sesión de la licencia web en la entrada de la aplicación e inicie sesión en la licencia web.

// 以下测试需要在本机没有其他正式许可的情况下进行。
	public static void main(String[] args) {
		int[] loginFeatures = new int[] { 10002, 10003 };
		// 登录Web许可
		BSLicense.login("192.168.17.32", 9183, loginFeatures);
		// 连接Web许可中的许可模块,验证Web许可获取是否成功,成功返回0。
		License lic = new License();
		int code = lic.connect(10002);
		System.out.println("code = " + code);
		// 登出Web许可
		BSLicense.logout();
		// 再次连接许可模块,验证Web许可是否已经无效,返回值应该为非0值。
		code = lic.connect(10002);
		System.out.println("code = " + code);
		System.out.println("end");
	}

【iObject.NET】¿Cómo obtener la altura del punto especificado en el caché de terreno de estaño?
[Solución]
Método 1: utilice la extracción de datos para obtener la altura de la memoria caché TIN: CacheProcessor3D.GeometryMatchTIN()
Método 2: utilice la representación de escena para agregar datos de terreno a la escena, use: Scene.GetAltitude() o Scene.GetHeight ( ) Tenga en cuenta que para usar el método 2, la escena debe mostrarse en la ventana de visualización.

[iObject JAVA] ¿Cómo realizar la conversión de un conjunto de datos simple a un conjunto de datos CAD en la conversión de tipo de escritorio, existe un método correspondiente?
[Solución] Esta función es una función empresarial, no el uso de una interfaz directa. Específicamente, se realiza manipulando objetos, recorriendo y sacando cada objeto del conjunto de datos CAD, determinando el tipo geométrico de Geometría, creando un nuevo conjunto de datos vectoriales según el tipo geométrico específico y almacenando los objetos en categorías por tipo.

[iObjects Java] Desarrollo de componentes, quiero realizar una transformación de proyección en el conjunto de datos de la cara, pero hay tantos parámetros en el sistema de coordenadas proyectadas, ¿cómo debo completarlos?
[Solución] De hecho, hay muchos objetos en el sistema de coordenadas proyectadas, incluido el elipsoide de referencia, el tipo de sistema de coordenadas proyectadas, el meridiano central, el desplazamiento, etc. Si un cierto valor se establece incorrectamente, el contenido de todo el objeto del sistema de coordenadas proyectado puede ser incorrecto, lo que provocará una falla en la transformación de la proyección. Una forma conveniente y práctica de construir un objeto de sistema de coordenadas proyectadas a través del valor epsg:

 PrjCoordSys prj=new PrjCoordSys(); 
 prj.fromEPSGCode(4547); 

Tenga en cuenta que no se llama a la interfaz setEPSGCode.

[iObjects for Spark] ¿Qué sistemas de coordenadas se admiten actualmente para la transformación de proyección de conjuntos de datos ráster?
[Solución] Actualmente admite tres sistemas de coordenadas de destino: WGS84 (epsg: 4326), China2000 (epsg: 4490), WebMercator (epsg: 3857)

[iObjects for Spark] ¿Cómo llamar al método de conversión de proyección de conjunto de datos ráster?
[Solución] Puede consultar el siguiente código:

val udbPath = "/data/test3857.tif"
val rasterRDD = RasterRDDProvider.readGeoTiff(sc, udbPath, TileSize.T512 , 2)
//转投影为WGS84坐标系
val res = Reproject.apply(rasterRDD,4326)

【iObjects JAVA】Importe tablas de Excel como conjuntos de datos en lotes, ¿cómo implementar la segunda fila como una fila de campo?
[Solución] Use el componente para importar la tabla de Excel como un conjunto de datos y la segunda fila como una fila de campo. Se deben resolver dos problemas: 1. La importación
de Excel requiere la dependencia de Office de un tercero. Esto requiere el permiso de la oficina; de lo contrario, debe omitir Aceptar, convertirlo primero en un archivo csv y luego importarlo (la razón por la cual el escritorio puede importar Excel es porque el escritorio tiene una dependencia de terceros) 2. Las interfaces y funciones existentes
, así como las funciones de excel en sí, no han eliminado el método de la primera fila, por lo que solo puede escribir un programa JAVA para ejecutar, de la siguiente manera:

public class DeleteFirstRow {
    public static void main(String[] args) throws IOException {
        String folderPath = "C:/ExcelFiles"; // Excel文件所在的文件夹路径
        File folder = new File(folderPath);
        File[] files = folder.listFiles();
        for (File file : files) {
            if (file.isFile() && file.getName().endsWith(".xlsx")) { // 只处理.xlsx文件
                deleteFirstRow(file);
            }
        }
    }
    private static void deleteFirstRow(File file) throws IOException {
        FileInputStream inputStream = new FileInputStream(file);
        Workbook workbook = WorkbookFactory.create(inputStream);
        Sheet sheet = workbook.getSheetAt(0);
        sheet.shiftRows(1, sheet.getLastRowNum(), -1); // 删除第一行
        FileOutputStream outputStream = new FileOutputStream(file);
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
        inputStream.close();
        System.out.println("Deleted first row in " + file.getName());
    }
}

Este programa primero especifica la ruta de la carpeta donde se encuentra el archivo de Excel, luego recorre todos los archivos .xlsx en la carpeta y llama al método para cada archivo deleteFirstRow. Este método utiliza la biblioteca de puntos de interés de Apache para leer un archivo de Excel, eliminar la primera fila y luego guardar el archivo modificado en el archivo original. Finalmente, el programa muestra la primera línea que indica qué archivo se eliminó.

【Java】¿Cómo modificar la posición del modelo en SuperMap iObjects Java?
[Solución] Geometry3D.setPosition(Point3D point3D) puede modificar la posición del modelo.

【Java】¿Cómo exportar un objeto modelo como modelo s3m en SuperMap iObjects Java?
[Solución] Puede usar ModelConvertor.toFile (modelo de modelo, configuración de ModelFileSetting) para exportar el modelo al formato especificado.

[Java] ¿Cómo obtener el número de filas y columnas del conjunto de datos ráster en el componente Java?
[Solución] Use DatasetGrid.getWidth() para obtener el número de filas; use DatasetGrid.getHeight() para obtener el número de columnas

【iObject.net】¿Cómo lograr lo mismo que el escritorio, al cambiar de escena, el administrador de capas también muestra las capas de la escena actual?
[Solución] En el evento de control de escena/cambio de escena, establezca

layersControl.Layer3DsTree.Scene = sceneControl.Scene;

[iObjects Java] [10.0.1] Al usar el componente de la versión iObjects Java 10.0.1 para agregar un conjunto de registros (Recordset) a un conjunto de datos vectoriales a través de la interfaz DatasetVector.append, la fuente de datos udbx se puede agregar correctamente, pero los datos de PostgreSQL fuente tiene ¿Cómo solucionar el fallo de anexión?
[Solución] Actualice la versión del componente Java de iObjects del que depende el proyecto a 10.2.1 para agregar conjuntos de registros a la fuente de datos de PostgreSQL con normalidad.

[iObjects Java] [11.0.1] Después de importar datos GeoJSON, el componente iObjects Java agregará sufijos como _R al nombre del conjunto de datos de manera predeterminada. ¿Por qué?
[Causa del problema] Los datos de GeoJSON pueden contener puntos, líneas, polígonos y otros tipos de datos, que luego se desensamblan después de importarlos. Para evitar conflictos repetidos entre los nombres de diferentes tipos de conjuntos de datos, se utiliza un sufijo de tipo añadido por defecto.

[UE] Al ejecutar el mapa de muestra, se produce un bloqueo y se informa un error de 'EXCEPTION_ACCESS_VIOLATION leyendo la dirección 0x000000003f800010'
[Solución] Debe configurar los permisos de archivo del directorio donde se encuentra el proyecto UE y configurar los permisos del usuario actual de Usuarios a control total

[UE] Se produce un bloqueo al cargar datos por primera vez o al abrir la carpeta Materiales durante la operación
[Motivo del problema] Al cargar datos por primera vez, el sombreador se compilará en la esquina superior izquierda de la interfaz en ejecución para la compilación; o después de ejecutar, abra la carpeta Materials debajo del contenido de SuperMap, habrá un bloqueo, causado por la compilación incompleta del sombreador compilado.
[Solución] Antes de ejecutar, abra todos los sombreadores en el archivo de materiales, déjelo compilar, luego haga clic en Guardar y cerrar, y los dos problemas anteriores no aparecerán cuando vuelva a ejecutar después de completar.

[iObjects .NET] ¿Cómo obtener las coordenadas del rango en el cálculo de propiedades geométricas? ¿Cómo obtener las coordenadas del punto central?
[Solución]
1. Obtener el rectángulo circunscrito mínimo a través de Geometry.Bounds. Su valor de coordenadas de límite izquierdo, valor de coordenadas de límite inferior, valor de coordenadas de límite derecho y valor de coordenadas de límite superior son el rango de límite
2. Después de obtener el rectángulo circunscrito, obtenga el sistema de coordenadas del punto central a través de Rectangle2D.Center

[iObjects .NET] Se reporta un error después de acercar y alejar rápidamente el mapa ¿Cómo solucionarlo?
[Solución] Intente poner esta línea de código debajo de la etiqueta de tiempo de ejecución en App.config, lo que puede resolver el problema de acercar y alejar rápidamente el mapa:

  <runtime>
    <useLegacyJit enabled="1" />
  </runtime>

Supongo que te gusta

Origin blog.csdn.net/supermapsupport/article/details/130524572
Recomendado
Clasificación