ShapeFile, sie sind auch "Shapes" (englische Form - Shape) sind eine Form oder eine Reihe von komplexen Formen, die möglicherweise nicht miteinander verbunden sind. Formen können eine Struktur von Punkten, Polylinien oder Polygonen haben.
Es ist auch erwähnenswert, dass zusammen mit der Formatdatei "* .shp" eine Datei im Format "* .dbf" generiert wird, in der die Header-Informationen zu unseren Formen gespeichert werden. Es ist wichtig, dass die Datei "* .dbf" denselben Namen haben wie die Datei ".shp" hat. Die .shp-Hauptdatei speichert geometrische Daten, die in der .shx-Datei (Index) indiziert und mit Attributen und deren Werten in einer dBASE-Datenbank (.dbf) erweitert sind. Veröffentlichung ESRI verfügt über eine vollständige Spezifikation des "Shapefile" -Formats (.shp, .shx, .dbf) und nutzt die vollständige Unterstützung einer Reihe von GIS- und CAD-Systemen. Es wird häufig zur Darstellung aller Arten von Karten und kartografischen Diagrammen verwendet.
Wenn eine der festgelegten Dateien verloren geht, können die Daten beschädigt werden oder das Projekt geht insgesamt verloren.
ArcGIS ist ein Geoinformationssystem (GIS) für die Arbeit mit Karten und Geoinformationen. Es wird zum Erstellen und Verwenden von Karten, zum Zusammenstellen von geografischen Daten, zur Analyse, zu den Austauschen und Erkennen von geografischen Daten sowie zum Verwenden von Karten und geografischen Informationen von einer Reihe der Anwendungen und Verwaltungen für geografische Informationen in einer Datenbank verwendet. Mehr über ArcGIS Technologie.
Im Kontext von GIS sind Vektordatenformate (oder tatsächlich Vektordatenspeichermodelle) eine der Möglichkeiten, Objekte in der realen Welt anzuzeigen.
Sie können SHP-Dateien mit den folgenden Programmen öffnen: CADE Pro, Parallels, Tools Center, AutoCAD, ArcExplorer von ESRI, Free File Viewer Pro.
Shapefiles eignen sich zum Speichern einfacher Geometrie für Features. Es gibt jedoch ernsthafte Probleme bei der Speicherung von Attributen. Sie können beispielsweise keine Zahlen runden, Unicode-Zeichen nur eingeschränkt unterstützen, keine Felder mit Namen, die mehr als 10 Zeichen haben, speichern und keine Möglichkeit haben, Datum und Uhrzeit in einem einzigen Feld zu konsolidieren. Dies sind nur die Hauptbeschränkungen. Darüber hinaus unterstützen sie nicht die Funktionen von Geodatabases, z. B. das Arbeiten mit Domänen und Subtypen. Daher sollten Sie keine ShapeFiles verwenden, wenn Sie komplexe Attribute speichern und die Funktionen von Geodatabases nutzen sollen.
Jede Komponente der ShapeFile darf nicht größer als 2 GB sein, was ungefähr 70 Millionen Punktmerkmalen entspricht, da 4-Byte-Nummern für Referenzen in der Datei verwendet werden. Die Anzahl der Linien- oder Polygon-Features, die in einer ShapeFile enthalten sein können, hängt von der Anzahl der Scheitelpunkte dieser Features ab (ein Scheitelpunkt entspricht einem Punkt).
Toleranzwerte (x; y) werden direkt in Geodatabase-Feature-Classes gespeichert, aber ShapeFiles speichern diese Werte jedoch auf ganz andere Weise: die (x; y) -Toleranz ist der Mindestabstand zwischen Koordinaten, näher an dem sie als identisch betrachtet werden. Zwischen Features derselben Feature-Class oder zwischen Features mehrerer verschiedenen Feature-Classes wird bei der Bewertung von Beziehungen dieselbe Toleranz verwendet. Es wird auch aktiv beim Bearbeiten von Objekten verwendet. Wenn Sie Operationen und Werkzeuge wie Überlagern, Ausschneiden, Ebene nach Ort auswählen oder ein Tool verwenden, das zwei oder mehr Feature-Classes als Eingabe verwendet, ist es besser, anstelle von den ShapeFiles die Geodatabase-Feature-Class zu verwenden.
Ein ShapeFile kann drei- bis fünfmal mehr Speicherplatz anfordern als eine Datei-Geodatabase oder SDE, da es unterschiedliche Komprimierungsmethoden verwendet.
ShapeFiles unterstützen Multipatch-Funktionen, jedoch nicht die folgenden Multipatch-Funktionen:
Der räumliche Index einer ShapeFile ist im Vergleich zu einem Geodatabase-Feature-Class-Index unwirksam. Räumliche Abfragen wie das Auswählen von Features innerhalb eines Polygons dauern länger als dieselbe Feature-Class in einer Geodatabase. Dieser Nachteil wird nur bei einer großen Anzahl von räumlichen Objekten beobachtet.
Parametrisch definierte Kurven (auch als Bogensegmentkurven bezeichnet) werden in den ShapeFiles nicht unterstützt. Parametrische Kurven können durch Bearbeiten einer Geodatabase-Feature-Class erstellt werden. Zur Darstellung der Kurven werden mathematische Formeln verwendet. Wenn Sie eine Geodatabase-Feature-Class, die parametrische Kurven enthält, in eine ShapeFile exportieren, werden die Kurven in einfache Linien-Features mit sehr nahe beieinanderliegenden Scheitelpunkten umgewandelt, um eine konsistente Form beizubehalten.
Im Gegensatz zu anderen Formaten speichert eine ShapeFile numerische Attribute im Zeichenformat und nicht im Binärformat. Bei reellen numerischen Werten (z. B. mit Dezimalstellen) kann dies zu Rundungsfehlern führen. Diese Einschränkung gilt nur für Attribute und nicht fürs Speichern von Koordinaten.
Mehr informationen über ShapeFile lesen Sie hier
Und hier über die Besonderheiten der Arbeit mit diesen Dateien
Wir haben über das Format selbst diskutiert. Und wie kann man die fertigen Dateien öffnen, wenn man in Delphi arbeitet? Es gibt drei Möglichkeiten:
Gehen Sie zu FR Designer. Suchen Sie das Objekt "Map" und fügen Sie es dem Dokument hinzu.
Ein Karteneditor sollte erscheinen. Die erste Registerkarte enthält allgemeine Informationen.
Karte - Wir geben den Namen unserer Karte an. Außerdem werden hier die Ebenen der Karte angezeigt, die mit den Pfeilen verschoben werden können.
Hinzufügen - Laden Sie eine Datei im Format shp, osm oder gpx hoch (in unserem Fall SHP).
Löschen - Löscht eine Kartenebene.
Seitenverhältnis beibehalten - Behalten Sie das Seitenverhältnis der Karte bei.
Mercator Projection – Verwenden der Marcator Projektion.
Um eine neue Ebene hinzuzufügen, klicken Sie auf die Schaltfläche "Hinzufügen ...". Das folgende Fenster wird angezeigt:
In diesem Schritt sollen Sie den Layertyp auswählen:
- Karte aus der Datei (.shp / .dbf, .osm, .gpx). Dies ist ein der am häufigste verwendeten Kartentypen. Sie können beispielsweise eine Weltkarte drucken und die Länder hervorheben, in denen der Umsatz über einem bestimmten Wert lag.
- eine leere Ebene mit vom Programm bereitgestellten Geodaten. Ihre Anwendung sollte geografische Koordinaten (ein Wertepaar - Längen- und Breitengrad) enthalten, die als Punkt auf der Karte angezeigt werden. Der Punkt kann signiert werden und je nach Daten auch unterschiedliche Größen und / oder Farben haben. In der Praxis wird dieser Kartentyp als zweite Ebene verwendet (die erste Ebene, die Basisebene, wird aus der Kartendatei entnommen). Auf der Basisebene wird beispielsweise eine Karte eines Landes angezeigt, und auf der zweiten Ebene werden Punkte mit den Namen der Städte angezeigt, in denen Verkäufe getätigt wurden. Die Größe und die Farbe des Punktes kann so angepasst werden, dass das Umsatzniveau in einer bestimmten Stadt klar ist.
Wenn Sie einen Layer basierend auf einer Kartendatei ausgewählt haben, geben Sie zusätzlich an, wie die Kartendaten gespeichert werden sollen:
- Die Daten sind in die Reportdatei eingebettet. In diesem Fall kann der Report erheblich größer werden.
- Die Reportdatei bezieht sich auf die Kartendatei. Es erfolgt keine Einbettung. Dieser Modus ist nützlich, wenn Sie mehrere Reporte mit denselben Karten haben.
Große Karten (mehr als 30 MB) oder eine große Anzahl von Polygonen (mehr als 20.000) verlangsamen den Report erheblich.
Wenn Sie auf Füllen klicken, gelangen wir in den Fülleditor. Die Registerkarte Pinsel hat 3 Eigenschaften:
Der Pinselstil verfügt über mehrere vordefinierte Formatierungsoptionen:
Fest - mit einer einzigen Farbe füllen;
Klar - klarer Hintergrund ohne Farbe;
Horizontal - horizontale Linien für den gesamten Hintergrund;
Vertikal - vertikale Linien für den gesamten Hintergrund;
Vorwärtsdiagonale - diagonale Linien für den gesamten Hintergrund;
Rückwärtsdiagonale - Rückwärtsdiagonallinien für den gesamten Hintergrund;
Cross-Linien für den gesamten Hintergrund;
Diagonales Kreuz - diagonale Kreuzlinien für den gesamten Hintergrund;
Die Hintergrundfarbe sowie die Vordergrundfarbe können aus einer vorgefertigten Farbpalette ausgewählt oder durch Klicken auf Andere die gewünschte Farbe angepasst werden.
Auf der zweiten Registerkarte haben wir die Verlaufseinstellungen für den Hintergrund.
Der Verlaufsstil kann horizontal, vertikal, oval, rechteckig, vertikal mit einem Übergang zu einer anderen Farbe in der Mitte und horizontal mit einem Übergang zu einer anderen Farbe in der Mitte sein.
Die Start- und Endfarbe kann aus einer vorgefertigten Farbpalette ausgewählt werden oder Sie können die gewünschte Farbe anpassen, indem Sie auf Andere klicken.
In der dritten Registerkarte sind die Glasfüllungseinstellungen.
Sie haben eine Wahl zwischen verschiedenen Ausrichtungen: vertikaler, horizontaler, vertikaler und horizontaler Spiegel.
Sie können eine Farbe aus einer vorgefertigten Palette auswählen oder die gewünschte Farbe anpassen, indem Sie auf Andere klicken.
Mischen - Farbmischungsverhältnis (im Screenshot ist es 0,5).
Schraffur anzeigen - Schraffur anzeigen.
Kehren wir zum Karteneditor zurück und suchen den Frame-Editor bereits.
Linienblock: Sie können einen Stil aus den bereitgestellten Optionen auswählen, die Linienbreite festlegen und eine Farbe auswählen.
Rahmenblock: In der Mitte befindet sich ein Beispielrahmen. Wählen Sie aus, auf welche Seiten der Linienstil durch das Beispiel angewendet werden soll, oder verwenden Sie die Schaltflächen (Ränder auf allen Seiten, ohne Ränder oder Seiten separat).
Durch Hinzufügen eines Schattens können wir auch die Breite und Farbe angeben.
Schauen wir uns nun die zweite Registerkarte im Karteneditor an - Farbskala.
Die Rahmenfarbe kann durch Einstellen der Rahmenbreite aus der vorgefertigten Farbpalette ausgewählt werden. Wir legen die Position der Waage fest. Zum Beispiel haben wir die Position in der unteren rechten Ecke.
Geben Sie den Namen der Skala in das Feld Text ein und legen Sie mit Schriftart ... die Schriftart und ihre Größe fest.
Die Registerkarte "Skalierungsgröße" unterscheidet sich im Erscheinungsbild nicht von den Skalierungsfarben.
Nachdem Sie das erhaltene Ergebnis gespeichert haben, wechseln Sie zur Registerkarte Vorschau und sehen Sie das fertige Ergebnis. Unsere Karte ist nicht statisch, Sie können sie dennoch überall skalieren. Wenn Sie mit der Maus über ein bestimmtes Gebiet (in unserem Fall ein beliebiges Land) bewegen, wird das gesamte Fragment hervorgehoben.
Speichern Sie in 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; |
Die Form ist bei weiterem nicht das einzige Format für die Arbeit mit Karten. Es gibt auch OpenStreetMap (OSM) und GPS eXchange Format, aber ich werde in anderen Artikeln darüber sprechen.