logo
small logo
  • Producto
  • Comprar
  • Ayuda
  • About
  • Consola de usarios Ayuda
    • en
    • de
    • JP
    • ZH
  • Página principal
  • /
  • Blogs
  • /
  • Cómo trabajar con mapas SHP en Delphi / Lazarus / С ++ Builder
  • Uso de mapas interactivos en FastReport VCL 2021

    30 de abril de 2021

    Este es el artículo final de los cursos del programa educativo Akademik. En las

    read more
  • Convierta los datos de la base de datos en un documento en Delphi / Lazarus / C ++ Builder

    3 de febrero de 2021

    ¿Cómo convertir un montón de datos en un informe? Oracle DB, MySQL, Microsoft SQL Server, PostgreSQL,

    read more
  • Cómo crear un solo informe de varios en Delphi / Lazarus / C++ Builder

    11 de diciembre de 2020

    Me gustaría señalar que FastReport VCL es uno de los componentes más convenientes para generar

    read more
  • Hacer un informe detallado en FastReport VCL (Delphi / Lazarus)

    9 de febrero de 2021

    "Drill Down" o "profundización en los datos" es un concepto de muchos aspectos, que puede

    read more
  • Cómo crear códigos de barras CODE 39 y CODE 39 Extended con Delphi / Lazarus

    23 de octubre de 2020

    CODE 39 es el código de barras desarrollado por Intermec Corporation en 1975. En el

    read more

Cómo trabajar con mapas SHP en Delphi / Lazarus / С ++ Builder

28 de septiembre de 2020

SHP

ShapeFile, también conocido como Shape, es una figura o un conjunto de figuras de formas complejas (probablemente, no relacionadas). Un campo de forma puede ser uno de los siguientes tipos de geometría: punto, polilínea o polígono.

También es notable que junto con un archivo * .shp, se forma el archivo * .dbf y contiene la información del encabezado sobre nuestras formas. Es importante que el archivo * .dbf tenga el mismo nombre que el archivo * .shp. El archivo .shp principal almacena datos geométricos indexados en un archivo .shx (índice) y atributos extendidos con sus valores en dBASE (.dbf). Las publicaciones de ESRI tienen una especificación completa del formato ShapeFile (.shp, .shx, .dbf) y utilizan el soporte completo entre varios sistemas GIS y CAD; se utilizan ampliamente para representar todo tipo de mapas y capas de diagramas cartográficos.

Si se pierde uno de los archivos de este conjunto, los datos pueden dañarse o el proyecto se perderá por completo.

Para trabajar en un solo proyecto, necesitará todos estos archivos.

ArcGIS es un sistema de información geográfica (GIS) para trabajar con mapas e información geográfica mantenida por el Environmental Systems Research Institute (Esri). Se utiliza para crear y usar mapas, compilar datos geográficos, analizar información cartografiada, compartir y descubrir información geográfica, usar mapas e información geográfica en una variedad de aplicaciones y administrar información geográfica en una base de datos. Obtenga más información sobre la tecnología ArcGIS.

En el contexto de SIG, los formatos de datos vectoriales (o esencialmente modelos de almacenamiento de datos vectoriales) son una de las formas de mostrar objetos del mundo real.

Puede abrir archivos .shp con el siguiente software: CADE Pro, Parallels, Tools Center, AutoCAD, ArcExplorer de ESRI, Free File Viewer Pro.

¿Cuándo debería usar un shapefile?

  • Al exportar datos para su uso en una aplicación de software que no es de Esri
  • Al exportar datos para su uso en ArcView GIS 3 o ArcInfo Workstation
  • Cuando necesite escribir características y atributos simples rápidamente, como para los servicios de geoprocesamiento (sin embargo, debe tener en cuenta las limitaciones que se detallan a continuación).

Desventajas de ShapeFile

Con algunas excepciones que se indican a continuación, los shapefiles son aceptables para almacenar geometría de entidad simple. Sin embargo, los shapefiles tienen serios problemas con los atributos. Por ejemplo, no pueden almacenar valores nulos, redondean números, tienen poca compatibilidad con cadenas de caracteres Unicode, no permiten nombres de campo de más de 10 caracteres y no pueden almacenar tanto una fecha como una hora en un campo. Estos son solo los principales problemas. Además, no son compatibles con las capacidades que se encuentran en las geodatabases, como dominios y subtipos. Entonces, a menos que tenga atributos muy simples y no requiera capacidades de geodatabase, no use shapefiles.

Limitaciones de geometría

Hay un límite de tamaño de 2 GB para cualquier archivo de componente de shapefile, lo que se traduce en un máximo de aproximadamente 70 millones de entidades de puntos. El número real de entidades de línea o polígono que puede almacenar en un shapefile depende del número de vértices en cada línea o polígono (un vértice es equivalente a un punto).

Los shapefiles no contienen una tolerancia x, y como las clases de entidad de geodatabase. La tolerancia x, y es la distancia mínima entre coordenadas antes de que se consideren iguales. Esta tolerancia x, y se usa al evaluar relaciones entre entidades dentro de la misma clase de entidad o entre varias clases de entidad diferentes. También se utiliza mucho al editar funciones. Si está realizando algún tipo de operación que implique la comparación entre entidades, como el uso de herramientas de superposición, la herramienta Recortar, la herramienta Seleccionar capa por ubicación o cualquier herramienta que tome dos o más clases de entidad como entrada, debería utilizar la entidad de geodatabase. clases (que tienen una tolerancia x, y) en lugar de shapefiles.

Un shapefile puede ocupar de tres a cinco veces más espacio que una geodatabase de archivos o SDE debido a los métodos de compresión de formas.

Los shapefiles admiten multiparches, pero carecen de soporte para las siguientes capacidades avanzadas de multiparche:

  • Coordenadas de textura
  • Texturas y color de la pieza
  • Iluminación normal

El índice espacial de un shapefile es ineficaz en comparación con el de una clase de entidad de geodatabase. Esto significa que las consultas espaciales (como la selección de entidades dentro de un polígono) toman más tiempo en comparación con una clase de entidad de geodatabase. Esta ineficiencia solo se nota cuando se trabaja con un gran número de funciones.

Las curvas definidas paramétricamente (también conocidas como curvas de arco circular) no se admiten en shapefiles. Las curvas paramétricas se crean editando las clases de entidad de la geodatabase, como se describe en Crear una curva. Las curvas de arco circular utilizan una fórmula matemática para dibujar la curva. Si exporta una clase de entidad de geodatabase que contiene entidades de curva de arco circular a un shapefile, las entidades curvas se transforman en entidades de línea simple con vértices poco espaciados para capturar la forma curva.

A diferencia de otros formatos, los shapefiles almacenan atributos numéricos en formato de caracteres en lugar de formato binario. Para números reales (es decir, números que contienen decimales), esto puede dar lugar a errores de redondeo. Esta limitación no se aplica a las coordenadas de las formas, solo a los atributos.

Puede leer más sobre ShapeFile aquí

Puede leer más sobre cómo trabajar con este formato aquí

Cómo crear un archivo .SHP usando el código

Hablamos sobre el formato en sí y aprendimos cómo abrir archivos terminados, pero ¿cómo trabajar con él en Delphi? Hay tres formas:

  1. GDAL: biblioteca de traducción para formatos de datos geoespaciales vectoriales y raster que se publica bajo una licencia de código abierto estilo X / MIT por la Fundación Geoespacial de Código Abierto. Como biblioteca, presenta un modelo de datos abstractos de un solo ráster y un modelo de datos abstractos de un solo vector a la aplicación de llamada para todos los formatos admitidos. También viene con una variedad de utilidades de línea de comando útiles para la traducción y el procesamiento de datos.
  2. MapWindow GIS : aplicación GIS (cartografía) de código abierto y conjunto de componentes cartográficos programables. Este proyecto es desarrollado por el Laboratorio de Software Geoespacial de la Universidad Estatal de Idaho. La aplicación se ejecuta solo en Windows, no es compatible con el sistema operativo Linux. En primer lugar, este proyecto es muy interesante para los desarrolladores, porque el núcleo de esta aplicación está escrito en C ++ y es una biblioteca ActiveX que puede usar por separado de MapWindow y desarrollar su propia aplicación para visualizar y procesar geodatos (funciona en todos entornos de desarrollo que admiten la importación de componentes ActiveX). Puede leer más sobre esto aquí. Githab. 
  3. Y la mejor opción es utilizar FastReports. ¿Por qué? ¡Porque está listo para usar! Tómalo, descárgalo de inmediato, y he aquí, ¡te muestra todo! Es como un pato asado de Pekín. Si lo cocinaste tú mismo, tendrías que encurtirlo durante una semana y, en nuestro caso, ¡ya lo hemos encurtido para ti! ¡Ven y cómelo ahora mismo!

Crear un archivo de mapa SHP

Vaya al Diseñador de FR. Busque el objeto de mapa y agréguelo al documento.

FR Designer

Debería aparecer un editor de mapas. La primera pestaña contiene información general.

Editor de mapas

Mapa: establezca el nombre de nuestro mapa. Además, aquí se mostrarán las capas del mapa que se pueden mover con las flechas.

Agregar: cargue un archivo en formato shp, osm o gpx (en nuestro caso, SHP).

Eliminar: elimina la capa del mapa.

Mantener relación de aspecto: mantenga la relación de aspecto.

Proyección de Mercator: utilice la proyección de Mercator.

Para agregar una nueva capa, haga clic en el botón "Agregar ...". Aparecerá la siguiente ventana:Añadir Capa

- mapa del archivo (.shp / .dbf, .osm, .gpx). Este es el tipo de mapa más utilizado. Por ejemplo, puede imprimir un mapa del mundo y resaltar los países donde las ventas alcanzaron más de cierto valor;

- capa de geodatos vacía presentada por el programa. Su aplicación debe proporcionar coordenadas geográficas (un par de valores: latitud y longitud), que se mostrarán como un punto en el mapa. Un punto puede tener una firma, así como un tamaño y / o color diferente, dependiendo de algunos datos. En la práctica, este tipo de mapa se utiliza como segunda capa (la primera capa, la base, se toma del archivo de mapa). Por ejemplo, la capa base muestra un mapa de un país y la segunda capa: puntos con los nombres de las ciudades donde se realizaron las ventas. El tamaño y el color del punto se pueden ajustar para que el nivel de ventas en una ciudad determinada sea comprensible.

Si seleccionó una capa basada en un archivo de mapa, debe especificar adicionalmente cómo almacenar los datos del mapa:

- Los datos se implementarán en el archivo del informe. Además, el informe puede aumentar considerablemente de tamaño.

- El archivo de informe se referirá al archivo de mapa, la implementación no ocurre. Este modo es útil si tiene varios informes que utilizan los mismos mapas.

Los mapas de gran volumen (más de 30 MB) o los mapas con una gran cantidad de polígonos (más de 20.000) ralentizarán drásticamente el informe.

Editor de RellenoEditor de relleno Cuando hacemos clic en el botón Rellenar entramos en el editor de relleno. Hay 3 propiedades en la pestaña Pincel:

Estilo de pincel

Estilo de pincel El estilo de pincel tiene varios formatos prefabricados:

Sólido: rellene con un solo color;

Claro: un fondo claro sin ningún color;

Horizontal: líneas horizontales para todo el fondo;

Vertical: líneas verticales para todo el fondo;

Diagonal hacia adelante: líneas diagonales para todo el fondo;

Diagonal hacia atrás: líneas diagonales hacia atrás para todo el fondo;

Cruce - líneas cruzadas en todo el fondo;

Cruz diagonal: líneas cruzadas diagonales para todo el fondo;

Color de fondo Color de primer plano

El color de fondo, así como el color de primer plano, se pueden seleccionar de la paleta de colores ya preparada o se pueden establecer haciendo clic en el botón Otro.

Editor de Color

En la segunda pestaña, tenemos la configuración de degradado para el fondo.

El estilo de degradado puede ser horizontal, vertical, ovalado, rectangular, vertical con una transición a un color diferente en el centro, horizontal con una transición a un color diferente en el centro.

Los colores inicial y final se pueden seleccionar de una paleta de colores prefabricada o se pueden establecer haciendo clic en el botón Otro.

Estilo degradado Estilo degradado

En la tercera pestaña podemos ver el editor de Relleno en forma de vidrio.

Hay una opción de orientación: espejo vertical, horizontal, vertical y horizontal.

Puede seleccionar un color de la paleta lista para usar o establecer el color deseado haciendo clic en el botón Otro.

Mezcla: coeficiente de mezcla de colores (en la captura de pantalla, el valor es 0.5)

Mostrar sombreado - mostrar sombreado.

Rellenar Editor en forma de vidrio Rellenar Editor en forma de vidrio

Regresemos al editor de mapas y busquemos el editor de marcos.

Bloque de línea: puede seleccionar un estilo del rango ofrecido, establecer el ancho de línea y seleccionar el color.

Bloque de marco: hay una muestra de marco en el centro y podemos elegir dónde aplicar el estilo de línea a través de la muestra o usando botones (bordes en todos los lados, sin bordes ni bordes en ciertos lados).

Al agregar una sombra, también podemos especificar el ancho y el color.

Marco editor Marco editor

Ejemplo de una escala de colores

Ahora consideremos la segunda pestaña del editor de mapas: la escala de colores.

El color del marco se puede seleccionar de la paleta de colores prefabricada al configurar el ancho de los marcos. Establecer la posición de la escala. En nuestro ejemplo, tenemos la ubicación en la esquina inferior derecha.

Ingrese el nombre de la escala en el campo Texto y configure la fuente y su tamaño presionando el botón Fuente….

La pestaña Escala de tamaño no difiere de la Escala de color, así que no lo repetiré.

Editor de Mapas

Después de guardar el resultado, vaya a la pestaña de vista previa y vea el resultado final. Nuestro mapa no será estático, aún puede escalarlo en cualquier lugar y cuando pase el mouse sobre un área específica (en nuestro caso, cualquier país), este fragmento completo se resaltará.

Ejemplo de un mapa en el informe

Creando un mapa SHP usando el código

Ahorro en SHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
procedure TForm1.FormCreate(Sender: TObject);
var page: TfrxReportPage;
 map: TfrxMapView;
 layer: TfrxMapFileLayer;
 applayer: TfrxApplicationLayer;
begin
 page := TfrxReportPage(frxReport1.FindObject('Page1'));
 map := TfrxMapView.Create(page);
 with map do
 begin
 CreateUniqueName();
 SetBounds(0, 0, 700, 800);
 MaxZoom := 50;
 MinZoom := 1;
 KeepAspectRatio := True;
 MercatorProjection := True;
 with ColorScale do
 begin
 Visible := True;
 BorderColor := 0;
 BorderWidth := 1;
 Dock := sdBottomRight;
 FillColor := 16777215;
 ValueFormat := '%1.0f';
 with Font do
 begin
 Charset := 1;
 Color := -16777208;
 Height := -13;
 Name := 'Tahoma';
 Style := [];
 end;
 with TitleFont do
 begin
 Charset := 1;
 Color := -16777208;
 Height := -13;
 Name := 'Tahoma';
 Style := [];
 end;
 end;
 with SizeScale do
 begin
 Visible := True;
 BorderColor := 0;
 BorderWidth := 1;
 Dock := sdTopLeft;
 FillColor := 16777215;
 ValueFormat := '%1.0f';
 with Font do
 begin
 Charset := 1;
 Color := -16777208;
 Height := -13;
 Name := 'Tahoma';
 Style := [];
 end;
 with TitleFont do
 begin
 Charset := 1;
 Color := -16777208;
 Height := -13;
 Name := 'Tahoma';
 Style := [];
 end;
 end;
 end;
 layer := TfrxMapFileLayer.Create(map);
 with layer do
 begin
 CreateUniqueName();
 MapFileName := 'C:\Program Files (x86)\FastReport 6 VCL Enterprise\Demos\Main\Maps\world.shp';
 DataSet := MapOrderDetailsDS;
 LabelColumn := 'NAME';
 SpatialColumn := 'NAME';
 ZoomPolygon := 'Germany';
 LabelKind := mlName;
 MapPalette := mpNone;
 MapAccuracy := 0;
 PixelAccuracy := 0;
 HighlightColor := 65280;
 Operation := opSum;
 ValueFormat := '%1.0f';
 PointLabelsVisibleAtZoom := 1;
 with ColorRanges do
 begin
 RangeFactor := rfValue;
 RangeCount := 0;
 Visible := True;
 StartColor := 255;
 MiddleColor := 65535;
 EndColor := 32768;
 end;
 with SizeRanges do
 begin
 RangeFactor := rfValue; {uses frxMapRanges}
 RangeCount := 0;
 Visible := True;
 StartSize := 4;
 EndSize := 20;
 end;
 end;
 applayer := TfrxApplicationLayer.Create(map);
 applayer.CreateUniqueName();
 with applayer do
 begin
 DataSet := MapOrderDetailsDS;
 AnalyticalValue := '<MapOrderDetails."UnitPrice"> * <MapOrderDetails."Quantity"> * (1 - <MapOrderDetails."Discount">)';
 Filter := '<MapOrders."ShipCountry"> = ''Germany''';
 HighlightColor := 65280;
 Operation := opSum;
 ValueFormat := '%1.0f';
 LabelKind := mlName;
 MapPalette := mpNone;
 PointLabelsVisibleAtZoom := 1;
 LabelValue := '<MapOrders."ShipCity">';
 LatitudeValue := '<MapOrders."Latitude">';
 LongitudeValue := '<MapOrders."Longitude">';
 SizeRanges.RangeFactor := rfValue;
 SizeRanges.RangeCount := 3;
 SizeRanges.Visible := True;
 SizeRanges.StartSize := 8;
 SizeRanges.EndSize := 20;
 ColorRanges.RangeFactor := rfValue;
 ColorRanges.RangeCount := 3;
 ColorRanges.Visible := True;
 ColorRanges.StartColor := 255;
 ColorRanges.MiddleColor := 65535;
 ColorRanges.EndColor := 32768;
 end;
 frxReport1.ShowReport;
end;

Shape está lejos de ser el único formato para trabajar con mapas: también hay OpenStreetMap (OSM) y GPS eXchange Format, pero hablaré de ellos en otros artículos. 

about product comprar
avatar
Michael Philippenko
VP
Fast Reports Team: Michae Philippenko - VP at Fast Reports
VCL Lazarus FastReport Delphi Map

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Comprar
  • Descargar
  • Documentación
  • Opiniones de usuarios
  • Cómo desinstalar nuestros productos
  • FAQ
  • Toturial en vídeo
  • Foro
  • Documentación técnica
  • Nuestras noticias
  • Quiénes somos
  • Socios
  • Extended licensing
  • Contactos

© 1998-2023 by Fast Reports Inc.

  • Privacidad