Mehr

Kann ich einen Punkt angeben und alle Features innerhalb eines bestimmten Radius um diesen Punkt abrufen?

Kann ich einen Punkt angeben und alle Features innerhalb eines bestimmten Radius um diesen Punkt abrufen?


Ich bin vor kurzem von ArcGIS zu QGIS gewechselt und suche nach Hilfe/Hinweisen zu folgenden Themen:

Verfügt QGIS über eine Methode, mit der ich eine Lat-Lon-Koordinate (oder eine UTM-XY-Koordinaten, Koordinatensystem nicht imp) angeben und alle Features abrufen kann, die innerhalb eines bestimmten Radius von diesem Punkt liegen?

Ich habe die Plugins von Drittanbietern für QGIS heruntergeladen und nachdem ich alle durchgesehen habe, habe ich nichts mit dieser Funktionalität gefunden (obwohl ich etwas sehr gut nicht vollständig verstanden haben könnte). Ich überlege, ein Plugin zu schreiben, falls etwas noch nicht existiert

Bearbeiten: Ich habe mir die Option unter angesehen: Ansicht -> Auswählen -> Features nach Radius auswählen. Dies scheint im Konzept dem zu ähneln, was ich beabsichtige (außer dass das Zentrum angegeben werden muss).


Ein solches Plugin ist mir nicht bekannt. Wer es aber entwickeln möchte, findet den Quellcode von „Select Features By Radius“ im „Select Plus“-Plugin. Es sollte ganz einfach sein, ein Eingabeformular zur Eingabe von Koordinaten und Radius hinzuzufügen, anstatt sie per Maus anzugeben.


Wie ich in den Kommentaren bemerkt habe, können Sie einfach vier Kreise zeichnen und sehen, ob sie sich überschneiden, aber hey, lass uns über Bord gehen.

Wie in den Kommentaren erwähnt, scheint es zwei mögliche Interpretationen Ihres Problems zu geben. Beide Interpretationen können mit konvexer Programmierung gelöst werden.

Auslegung 1: Finden Sie einen Punkt, der sich innerhalb einer festen Entfernung von $d$ von . befindet jeder einer Menge von $m$ Punkten, $p_1,dots,p_m$ , die jeweils in $mathbb . leben^n$ (in deiner Frage implizierst du $n=2$ , aber hey, lass uns verrückt werden). Dies kann als das folgende konvexe Programm formuliert werden (technisch ein konisches Programm zweiter Ordnung oder SOCP). $ egin min & 0 ext & |x-p_i|leq ext< für alle >i=1,dots,m end $ Die Zielfunktion ist gleich Null, da wir nur daran interessiert sind, einen zulässigen Punkt zu finden. Im Allgemeinen kann es (unzählig unendlich) viele Punkte geben, die machbar sind, und diese Formulierung erlaubt es uns, Dinge zur Zielfunktion hinzuzufügen. Vielleicht möchten wir beispielsweise den Punkt $x$ so nah wie möglich an $p_1$ legen. Dann ist unser Optimierungsproblem $ egin min & |x-p_1| ext & |x-p_i|leq ext< für alle >i=1,dots,m end $ Vielleicht möchten wir den durchschnittlichen Abstand zwischen $x$ und allen Punkten $p_i$ minimieren: $ egin min & displaystylefrac<1>Summe_^m|x-p_i| ext & |x-p_i|leq ext< für alle >i=1,dots,m end $ Sie haben die Idee.

Auslegung 2: Finden Sie einen Punkt, an dem die gesamt Der Abstand zwischen $p_i$ und $x$ ist kleiner oder gleich $d$ . Dies ist wieder ein konvexes Programm: $ egin min & 0 ext & displaystylesum_^m|x-p_i|leq Ende $ Wie zuvor können wir die Zielfunktion ändern, um zwischen mehreren optimalen Lösungen auszuwählen.

Rechenergebnisse

Dies sind sehr einfache konvexe Programme, die beispielsweise mit CVXPY gelöst werden können. Hier ist ein Beispiel für Interpretation 1, wo wir den Punkt mit dem minimalen durchschnittlichen Abstand zu allen anderen Punkten finden möchten. Ich mache es in zwei Dimensionen mit vier Kreisen, wie das OP verlangt.

So sieht das Ergebnis aus. Die vier Punkte $p_i$ sind blau, mit Kreisen vom Radius $d=2$ um sie herum. Die Lösung mit minimalem durchschnittlichen Abstand zu jedem blauen Punkt wird in Rot angezeigt.


Über Masken

EIN Maske in After Effects ist ein Pfad, der als Parameter zum Ändern von Ebenenattributen, Effekten und Eigenschaften verwendet wird. Die häufigste Verwendung einer Maske ist die Änderung eines Alphakanals einer Ebene, der die Transparenz der Ebene bei jedem Pixel bestimmt. Eine weitere häufige Verwendung einer Maske ist ein Pfad zum Animieren von Text. (Siehe Erstellen und Animieren von Text auf einem Pfad.)

Weitere Informationen zu Pfaden im Allgemeinen finden Sie unter Pfade.

Geschlossene Pfadmasken können transparente Bereiche für eine Ebene erstellen. Offene Pfade können keine transparenten Bereiche für eine Ebene erstellen, sind jedoch als Parameter für einen Effekt nützlich. Zu den Effekten, die einen offenen oder geschlossenen Maskenpfad als Eingabe verwenden können, gehören Stroke, Path Text, Audio Waveform, Audio Spectrum und Vegas. Zu den Effekten, die geschlossene Masken (aber keine offenen Masken) als Eingabe verwenden können, gehören Fill, Smear, Reshape, Particle Playground und Inner/Outer Key.

Eine Maske gehört zu einer bestimmten Ebene. Jede Ebene kann mehrere Masken enthalten.

Sie können mit den Formwerkzeugen Masken in gängigen geometrischen Formen – einschließlich Polygonen, Ellipsen und Sternen – zeichnen oder mit dem Stiftwerkzeug einen beliebigen Pfad zeichnen.

In den meisten Fällen entspricht das Zeichnen von Maskenpfaden dem Zeichnen von Formpfaden auf Formebenen, obwohl die Bearbeitung und Interpolation von Maskenpfaden einige zusätzliche Funktionen bietet. Sie können einen Maskenpfad mithilfe von Ausdrücken mit einem Formpfad verknüpfen, wodurch Sie die Vorteile von Masken in Formebenen einbringen können und umgekehrt. Siehe Erstellen von Formen und Masken und Bearbeiten und Animieren von Formpfaden und Masken.

Die Position einer Maske in der Stapelreihenfolge im Schnittfenster beeinflusst, wie sie mit anderen Masken interagiert. Sie können eine Maske an verschiedene Positionen innerhalb der Eigenschaftengruppe „Masken“ im Schnittfenster ziehen.

Die Eigenschaft Maskendeckkraft einer Maske bestimmt den Einfluss, den eine geschlossene Maske auf den Alphakanal der Ebene innerhalb des Maskenbereichs hat. Ein Maskendeckkraftwert von 100 % entspricht einem lichtundurchlässigen Innenbereich. Der Bereich außerhalb der Maske ist immer transparent. Um zu invertieren, was für eine bestimmte Maske als innen und was als außen betrachtet wird, wählen Sie im Schnittfenster neben dem Maskennamen die Option „Umkehren“.


Syntax

Das Eingabe-Oberflächen-Raster. Es kann ein Integer- oder ein Gleitkomma-Raster sein.

Das Eingabe-Raster wird während der Sichtbarkeitsberechnung in ein geozentrisches 3D-Koordinatensystem transformiert. NoData-Zellen im Eingabe-Raster blockieren die Sichtbarkeitsbestimmung nicht.

Die Eingabe-Feature-Class, die die Beobachterpositionen identifiziert. Dabei kann es sich um Punkt-, Mehrpunkt- oder Polylinien-Features handeln.

Die Eingabe-Feature-Class wird während der Sichtbarkeitsberechnung in ein geozentrisches 3D-Koordinatensystem umgewandelt. Beobachter außerhalb der Ausdehnung des Oberflächen-Rasters oder auf NoData-Zellen werden bei der Berechnung ignoriert.

Wenn beim Analysetyp FREQUENCY der vertikale Fehlerparameter 0 ist oder nicht angegeben ist, zeichnet das Ausgabe-Raster auf, wie oft jede Zellenposition im Eingabe-Oberflächen-Raster von den Eingabe-Beobachtungspunkten gesehen werden kann. Wenn der vertikale Fehlerparameter größer als 0 ist, zeichnet jede Zelle im Ausgabe-Raster die Summe der Wahrscheinlichkeiten auf, dass die Zelle für einen der Beobachter sichtbar ist. Beim Analysetyp OBSERVERS zeichnet das Ausgabe-Raster die eindeutigen Regions-IDs für die sichtbaren Bereiche auf, die über die Ausgabe-Beobachter-Region-Beziehungstabelle mit den Beobachter-Features verknüpft werden können.

Das Ausgabe-Raster über Bodenniveau (AGL).

Das AGL-Ergebnis ist ein Raster, bei dem jeder Zellenwert die Mindesthöhe darstellt, die einer ansonsten nicht sichtbaren Zelle hinzugefügt werden muss, damit sie von mindestens einem Beobachter sichtbar wird. Bereits sichtbare Zellen werden in diesem Ausgabe-Raster mit 0 belegt.

Wenn der vertikale Fehlerparameter 0 ist, ist das Ausgabe-AGL-Raster ein Einband-Raster. Wenn der vertikale Fehler größer als 0 ist, wird das Ausgabe-AGL-Raster als Dreiband-Raster erstellt, um die zufälligen Effekte des Eingabe-Rasters zu berücksichtigen. Das erste Band repräsentiert die mittleren AGL-Werte, das zweite Band repräsentiert die minimalen AGL-Werte und das dritte Band repräsentiert die maximalen AGL-Werte.

Wählen Sie die Art der Sichtbarkeitsanalyse aus, die Sie durchführen möchten, indem Sie entweder bestimmen, wie sichtbar jede Zelle für die Beobachter ist, oder für jede Oberflächenposition identifizieren, welche Beobachter sichtbar sind.

  • FREQUENCY —Die Ausgabe zeichnet auf, wie oft jede Zellenposition im Eingabe-Oberflächen-Raster von den Eingabe-Beobachtungspositionen gesehen werden kann (als Punkte oder als Stützpunkte für Polylinien-Beobachter-Features). Dies ist die Standardeinstellung.
  • BEOBACHTER — Die Ausgabe identifiziert genau, welche Beobachterpunkte von jeder Raster-Oberflächenposition aus sichtbar sind. Die zulässige maximale Anzahl von Eingabebeobachtern beträgt bei diesem Analysetyp 32.

Der Unsicherheitsfaktor (Root Mean Square Error oder RMSE) in den Oberflächenhöhenwerten. Es handelt sich um einen Gleitkommawert, der den erwarteten Fehler der eingegebenen Höhenwerte darstellt. Wenn diesem Parameter ein Wert größer als 0 zugewiesen wird, ist das Ausgabe-Sichtbarkeits-Raster ein Gleitkomma-Raster. In diesem Fall stellt jeder Zellenwert im Ausgabe-Sichtbarkeits-Raster die Summe der Wahrscheinlichkeiten dar, dass die Zelle für einen der Beobachter sichtbar ist.

Wenn der Analysetyp OBSERVERS oder die Analysemethode PERIMETER_SIGHTLINES ist, ist dieser Parameter deaktiviert.

Die Ausgabetabelle zum Identifizieren der Bereiche, die für jeden Beobachter sichtbar sind. Diese Tabelle kann mit der Eingabe-Beobachter-Feature-Class und dem Ausgabe-Sichtbarkeits-Raster verknüpft werden, um die für bestimmte Beobachter sichtbaren Regionen zu identifizieren.

Diese Ausgabe wird nur erstellt, wenn der Analysetyp OBSERVERS ist.

Brechungskoeffizient des sichtbaren Lichts in Luft.

Dieser Wert gibt einen vertikalen Abstand (in Oberflächeneinheiten) an, der zum Z-Wert jeder Zielzelle hinzugefügt werden muss, wenn er für die Sichtbarkeit berücksichtigt wird. Es sollte eine positive ganze Zahl oder ein Gleitkommawert sein.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird dieser Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Dieser Wert wird verwendet, um die Oberflächenhöhen der Beobachterpunkte oder Scheitelpunkte zu definieren.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter nicht angegeben wird, wird die Beobachterhöhe mithilfe der bilinearen Interpolation aus dem Oberflächen-Raster ermittelt. Wenn dieser Parameter auf einen Wert gesetzt ist, wird dieser Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Dieser Wert gibt eine vertikale Distanz (in Oberflächeneinheiten) an, die zur Beobachterhöhe hinzugefügt werden soll. Es sollte eine positive ganze Zahl oder ein Gleitkommawert sein.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird dieser Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Dieser Wert definiert die Startentfernung (Mindestentfernung), ab der die Sichtbarkeit bestimmt wird. Zellen, die näher als dieser Abstand sind, werden in der Ausgabe als nicht sichtbar betrachtet, können aber dennoch die Sichtbarkeit der Zellen zwischen dem Innenradius und dem Außenradius blockieren. Der Standardwert ist 0.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird der Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Abstandsart für den Parameter Innenradius.

  • GROUND —Der Innenradius ist als 2D-Abstand zu interpretieren. Dies ist die Standardeinstellung.
  • 3D —Der Innenradius ist als 3D-Abstand zu interpretieren.

Dieser Wert definiert die maximale Entfernung, ab der die Sichtbarkeit bestimmt wird. Zellen jenseits dieser Distanz werden von der Analyse ausgeschlossen.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird der Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Abstandsart für den Parameter Außenradius.

  • GROUND —Der äußere Radius ist als 2D-Abstand zu interpretieren. Dies ist die Standardeinstellung.
  • 3D —Der Außenradius ist als 3D-Entfernung zu interpretieren.

Dieser Wert definiert den Startwinkel des horizontalen Scanbereichs. Der Wert sollte in Grad von 0 bis 360,0 angegeben werden, wobei 0 nach Norden ausgerichtet ist. Der Standardwert ist 0.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird der Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Dieser Wert definiert den Endwinkel des horizontalen Scanbereichs. Der Wert sollte in Grad von 0 bis 360,0 angegeben werden, wobei 0 nach Norden ausgerichtet ist. Der Standardwert ist 360,0.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird der Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Dieser Wert definiert die obere vertikale Winkelgrenze des Scans über einer horizontalen Ebene. Der Wert sollte in Grad von 0 bis 90,0 angegeben werden, wobei es sich um eine Ganzzahl oder einen Gleitkommawert handeln kann. Der Standardwert ist 90,0.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird der Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Dieser Wert definiert die untere vertikale Winkelgrenze des Scans unterhalb einer horizontalen Ebene. Der Wert sollte in Grad von -90,0 bis 0 angegeben werden, wobei es sich um eine Ganzzahl oder einen Gleitkommawert handeln kann. Der Standardwert ist -90,0.

Dabei kann es sich um ein Feld im Eingabe-Beobachter-Features-Dataset oder um einen numerischen Wert handeln. Wenn dieser Parameter auf einen Wert gesetzt ist, wird der Wert auf alle Beobachter angewendet. Um unterschiedliche Werte für jeden Beobachter anzugeben, legen Sie diesen Parameter auf ein Feld im Eingabe-Dataset für Beobachter-Features fest.

Wählen Sie die Methode aus, mit der die Sichtbarkeit berechnet wird. Mit dieser Option können Sie eine gewisse Genauigkeit gegen eine höhere Leistung eintauschen.

  • ALL_SIGHTLINES —Eine Sichtlinie wird zu jeder Zelle im Raster geführt, um sichtbare Bereiche festzulegen. Dies ist die Standardmethode.
  • PERIMETER_SIGHTLINES — Sichtlinien werden nur zu den Zellen am Umfang der sichtbaren Bereiche geführt, um Sichtbarkeitsbereiche festzulegen. Diese Methode hat eine bessere Leistung als die Methode ALL_SIGHTLINES, da weniger Sichtlinien in der Berechnung ausgeführt werden.

3 Antworten 3

Ich habe keine Beweise vorzubringen, noch habe ich mit den Entwicklern gesprochen, also nimm einfach das, was ich sage, als meine persönliche Meinung, die auf der Nutzungserfahrung aufbaut.

Viele Schieberegler in Blender haben Werte, die auf bestimmte Werte begrenzt sind. Ihr Zweck besteht darin, einen Absturz der Software zu vermeiden, der beispielsweise durch intensive Berechnungen verursacht wird. Ein berühmtes Beispiel ist der 6. Schritt für den Modifikator "Subdivision Surface". Ohne dies kann der Gelegenheitsbenutzer den Wert einfach anklicken und ziehen, und er wird wahrscheinlich ein einfrierendes Fenster erhalten, das die Arbeitszeit ruinieren kann.

"Stoppschritte" können eine Hilfe sein, um Verhalten zu verhindern, das Benutzer normalerweise nicht wollen: Sie sind eine Schwelle, die Sie warnt: "Bevor Sie diese Grenze überschreiten, überlegen Sie zweimal, was Sie tun. Ist es das, was Sie wirklich wollen? "Sind Sie sich der Konsequenzen Ihres Handelns bewusst?".

Warum kann es also hilfreich sein, die Größe eines Objekts auf 100 Einheiten zu begrenzen?

Ich würde sagen, dass sich alles auf die Standardszene bezieht. Während jeder gerne den Standardwürfel löscht, neigen nicht so viele dazu, die Kamera zu löschen, oder wenn sie es tun, platziert der Befehl Kamera hinzufügen einen, der eines mit dem Standard gemein hat: die Clipping-Grenzen.

Das Clipping beenden ist immer auf 100 Einheiten eingestellt, so dass größere Objekte nicht sicherstellen, dass sie im Frustrum enthalten und somit von der Kamera aus sichtbar sind. In diesem Sinne ist das Platzieren eines "Stoppschritts" eine Hilfe, um das Hinzufügen von Geometrie zu vermeiden, die nicht sichtbar ist, es sei denn, Sie sind sich wirklich sicher, was Sie tun möchten.

Der "100 Stop Step" existiert zwar in allen Standardprimitiven (Plane, Circle, UV Sphere, Ico SPhere, Cone, Torus, Suzanne. ), aber nur im Torus-Objekt kann nicht übertroffen werden. Meine wilde Vermutung wäre, dass der Code noch nicht aktualisiert wurde (in Blender 2.45 hatte jedes Primitiv das Limit).


Hausdorff-Dimension der Menge rationaler Zahlen innerhalb eines bestimmten Intervalls?

Einführung: Die Hausdorff-Dimension (auch bekannt als Hausdorff-Besicovitch-Dimension) ist eine erweiterte nicht-negative reelle Zahl, die mit jedem metrischen Raum verbunden ist. Im Allgemeinen verallgemeinert die Hausdorff-Dimension den Begriff der Dimension eines reellen Vektorraums. Das heißt, die Hausdorff-Dimension eines n-dimensionalen inneren Produktraums ist gleich $n$. Das heißt zum Beispiel, die Hausdorff-Dimension eines Punktes ist null, die Hausdorff-Dimension einer Linie ist eins und die Hausdorff-Dimension der Ebene ist zwei. Es gibt jedoch viele unregelmäßige Mengen, die eine nicht ganzzahlige Hausdorff-Dimension haben. Viele der technischen Entwicklungen, die verwendet wurden, um die Hausdorff-Dimension für stark unregelmäßige Mengen zu berechnen, wurden von Besicovitch erhalten.

Betrachten Sie intuitiv die Anzahl $N(r)$ von Kugeln mit einem Radius von höchstens $r$, die erforderlich sind, um $X$ vollständig abzudecken. Wenn $r$ klein ist, ist $N(r)$ groß. Für eine "gute" Menge $X$ ist die Hausdorff-Dimension die eindeutige Zahl $d$, so dass $N(r)$ um 1/rd wächst, wenn r gegen Null geht. Genaueres siehe hier>>>.

Da ich im Hintergrund die reale Zahlenreihe im Hinterkopf habe, habe ich Schwierigkeiten, zu finden:

Was ist die Hausdorff-Dimension der Menge der rationalen Zahlen innerhalb eines bestimmten Intervalls?


Reproduzieren

Kann ich über ein Site-to-Site-VPN nach Azure replizieren?

Azure Site Recovery repliziert Daten über einen öffentlichen Endpunkt in ein Azure-Speicherkonto oder verwaltete Datenträger. Die Replikation erfolgt nicht über ein Site-to-Site-VPN.

Warum kann ich nicht über VPN replizieren?

Wenn Sie in Azure replizieren, erreicht der Replikationsdatenverkehr die öffentlichen Endpunkte eines Azure-Speichers. Somit können Sie nur über das öffentliche Internet oder über ExpressRoute (Microsoft-Peering oder ein vorhandenes öffentliches Peering) replizieren.

Kann ich Riverbed SteelHeads für die Replikation verwenden?

Unser Partner Riverbed bietet detaillierte Anleitungen zur Arbeit mit Azure Site Recovery. Lesen Sie ihren Lösungsleitfaden.

Kann ich ExpressRoute verwenden, um virtuelle Computer in Azure zu replizieren?

Ja, ExpressRoute kann verwendet werden, um lokale virtuelle Computer in Azure zu replizieren.

  • Azure Site Recovery repliziert Daten über einen öffentlichen Endpunkt in einen Azure Storage. Sie müssen Microsoft-Peering einrichten oder ein vorhandenes öffentliches Peering (für neue Verbindungen veraltet) verwenden, um ExpressRoute für die Site Recovery-Replikation zu verwenden.
  • Microsoft-Peering ist die empfohlene Routingdomäne für die Replikation.
  • Die Replikation wird über privates Peering nicht unterstützt.
  • Wenn Sie VMware-Maschinen oder physische Maschinen schützen, stellen Sie sicher, dass auch die Netzwerkanforderungen für den Konfigurationsserver erfüllt sind. Für die Orchestrierung der Site Recovery-Replikation ist vom Konfigurationsserver eine Verbindung zu bestimmten URLs erforderlich. ExpressRoute kann für diese Konnektivität nicht verwendet werden.
  • Nachdem für die virtuellen Computer ein Failover zu einem virtuellen Azure-Netzwerk durchgeführt wurde, können Sie über das private Peering-Setup mit dem virtuellen Azure-Netzwerk auf sie zugreifen.

Welche Art von Speicherkonto oder verwaltetem Datenträger benötige ich, wenn ich nach Azure repliziere?

Die Verwendung von Speicherkonten als Zielspeicher wird von Azure Site Recovery nicht unterstützt. Es wird empfohlen, eher verwaltete Datenträger als Zielspeicher für Ihre Maschinen zu verwenden. Verwaltete Datenträger unterstützen nur den LRS-Typ für die Datenstabilität.

Wie oft kann ich Daten replizieren?

  • Hyper-V: Hyper-V-VMs können alle 30 Sekunden (außer Premium-Speicher), fünf Minuten oder 15 Minuten repliziert werden.
  • Azure-VMs, VMware-VMs, physische Server: Eine Replikationshäufigkeit ist hier nicht relevant. Die Replikation erfolgt kontinuierlich.

Kann ich die Replikation von einer bestehenden Wiederherstellungs-Site auf eine andere tertiäre Site ausweiten?

Erweiterte oder verkettete Replikation wird nicht unterstützt. Fordern Sie diese Funktion im Feedback-Forum an.

Kann ich beim ersten Replizieren in Azure eine Offlinereplikation durchführen?

Dies wird nicht unterstützt. Fordern Sie diese Funktion im Feedback-Forum an.

Kann ich bestimmte Festplatten von der Replikation ausschließen?

Dies wird unterstützt, wenn Sie VMware-VMs und Hyper-V-VMs über das Azure-Portal in Azure replizieren.

Kann ich virtuelle Maschinen mit dynamischen Datenträgern replizieren?

Dynamische Datenträger werden beim Replizieren von virtuellen Hyper-V-Computern und beim Replizieren von VMware-VMs und physischen Computern in Azure unterstützt. Der Betriebssystemdatenträger muss ein Basisdatenträger sein.

Kann ich die für den Replikationsverkehr zugewiesene Bandbreite drosseln?

Jawohl. Weitere Informationen zur Drosselung der Bandbreite finden Sie in diesen Artikeln:

Kann ich die Replikation mit App-Konsistenz auf Linux-Servern aktivieren?

Jawohl. Azure Site Recovery für Linux-Betriebssystem unterstützt benutzerdefinierte Anwendungsskripts für App-Konsistenz. Das benutzerdefinierte Skript mit Vor- und Nachoptionen wird vom Azure Site Recovery-Mobilitäts-Agent während der App-Konsistenz verwendet. Nachfolgend finden Sie die Schritte zum Aktivieren.

Melden Sie sich als Root beim Computer an.

Ändern Sie das Verzeichnis in den Installationsspeicherort des Azure Site Recovery-Mobilitäts-Agents. Standard ist "/usr/local/ASR"
# cd /usr/local/ASR

Ändern Sie das Verzeichnis in "VX/scripts" unter Installationsverzeichnis
# CD-VX/Skripte

Erstellen Sie ein Bash-Shell-Skript namens "customscript.sh" mit Ausführungsberechtigungen für den Root-Benutzer.
A. Das Skript sollte die Befehlszeilenoptionen "--pre" und "--post" (beachten Sie die doppelten Bindestriche) unterstützen
B. Wenn das Skript mit pre-option aufgerufen wird, sollte es die Anwendungseingabe/-ausgabe einfrieren und wenn es mit der post-option aufgerufen wird, sollte es die Anwendungseingabe/-ausgabe auftauen.
C. Eine Mustervorlage -

  1. Fügen Sie die Eingabe-/Ausgabebefehle zum Einfrieren und Freigeben in den Vor- und Nachschritten für die Anwendungen hinzu, die App-Konsistenz erfordern. Sie können ein weiteres Skript hinzufügen, indem Sie diese angeben und es von "customscript.sh" mit Pre- und Post-Optionen aufrufen.

Die Site Recovery Agent-Version sollte 9.24 oder höher sein, um benutzerdefinierte Skripts zu unterstützen.


SVG skalieren

Das Folgende ist ein Gastbeitrag von Amelia Bellamy-Royds. Amelia hat viel Erfahrung mit SVG, als Co-Autorin von SVG Essentials und Autorin des kommenden Using SVG with CSS3 and HTML5 . Amelia und ich werden auch auf dem kommenden RWD Summit über SVG sprechen! Hier teilt sie eine epische Anleitung zum Skalieren von SVG mit allen Möglichkeiten, die Sie dazu benötigen. Es ist bei weitem nicht so einfach wie das Skalieren von Rastergrafiken, aber das kann gut sein, weil es interessante Möglichkeiten eröffnet.

Sie haben die Entscheidung getroffen. Du wirst es endlich tun. In diesem Jahr werden Sie SVG in Ihren Webdesigns verwenden. Sie erstellen ein fabelhaftes Header-Logo in Inkscape und kopieren den SVG-Code, den es ausspuckt, und fügen ihn in Ihre WordPress-Header-Datei ein. Natürlich geben Sie die Auflösung des letzten Jahres nicht auf, um immer Responsive Design zu verwenden, also legen Sie svg.banner < width: 100% height: auto > in Ihrem CSS fest und denken, Sie sind eingestellt.

Bis Sie Ihre Webseite in Testbrowsern öffnen und feststellen, dass einige große Leerzeichen über und unter dem Bild hinterlassen, während andere es zu kurz abschneiden.

SVG steht für skalierbare Vektorgrafiken. Die Skalierung von SVG sollte also einfach sein, oder? Ist es nicht das, was die SVG-Befürworter die ganze Zeit gesagt haben, dass SVG in jeder Größe gut aussieht? Es ist, aber es ist nicht. SVG sieht in jedem Maßstab gut aus, kann aber auf so viele verschiedene Arten skaliert werden, dass es für SVG-Anfänger verwirrend sein kann, es so zu verhalten, wie Sie es möchten. Es hilft nicht, dass Browser erst seit kurzem einen Standardansatz für die Größenanpassung von Inline-SVG-Inhalten verwenden.

Dass die Skalierung von SVG so schwierig ist, liegt unter anderem daran, dass wir eine bestimmte Vorstellung davon haben, wie Bilder sollte skalieren, und SVG verhält sich nicht auf die gleiche Weise.

Rasterbilder wie JPG, PNG und GIF haben eine klar definierte Größe. Die Bilddatei beschreibt, wie der Browser ein Raster mit einer bestimmten Anzahl von Pixeln Breite und einer bestimmten Anzahl von Pixeln Höhe einfärben soll. Ein wichtiger Nebeneffekt ist, dass Rasterbilder eine klar definierte Seitenverhältnis: das Verhältnis von Breite zu Höhe.

Sie können den Browser zwingen, ein Rasterbild mit einer anderen Größe als seiner intrinsischen Höhe und Breite zu zeichnen, aber wenn Sie ein anderes Seitenverhältnis erzwingen, werden die Dinge verzerrt. Aus diesem Grund wird seit den Anfängen des Webs die automatische Skalierung von Bildern unterstützt: Sie legen die Höhe fest oder die Breite, und der Browser passt die andere Dimension so an, dass das Seitenverhältnis konstant bleibt.

Siehe die Grundlagen der Stiftbildskalierung von Amelia Bellamy-Royds (@AmeliaBR) auf CodePen.

SVG-Bilder hingegen können in jeder Pixelgröße gezeichnet werden, benötigen also keine klar definierte Höhe oder Breite. Und sie werden nicht immer ein klar definiertes Seitenverhältnis haben. Sie müssen diese Informationen (und mehr) explizit angeben, wenn Sie möchten, dass das SVG an die von Ihnen angegebenen Abmessungen angepasst wird.

Wenn Sie dies nicht tun, wird SVG überhaupt nicht skalieren. Das folgende Beispiel verwendet Inline-SVG, wobei die Abmessungen des Elements (gepunktete Linie) angepasst werden, ohne die Größe der gezeichneten Grafik zu ändern:

Sehen Sie sich den Stift Non-Scaling SVG von Amelia Bellamy-Royds (@AmeliaBR) auf CodePen an.

Warum verhält es sich so? Denn SVG ist nicht (nur) ein Bild. SVG ist ein Dokument. Obwohl das obige Beispiel Inline-SVG verwendet, hätte es genauso gut <object> oder <iframe> verwenden können. Es würde genau gleich aussehen, selbst wenn Sie <img>-Tags verwenden würden, um denselben SVG-Code einzubetten.

Wenn Sie eine HTML-Datei mit einem <iframe> einfügen, erwarten Sie nicht, dass der Text skaliert wird, wenn Sie die Größe des Frames ändern. Gleiches mit SVG. Standardmäßig wird es in der im Code angegebenen Größe gezeichnet, unabhängig von der Größe der Leinwand. Was passiert, wenn Sie die Höhe oder Breite (oder beides) für diese SVGs auf automatisch setzen? Die Standardgröße für HTML-ersetzte Elemente wird verwendet: 300px breit, 150px hoch. Dies gilt für <img> , <object> oder <iframe> . Die Standardgröße 300𴡮 gilt auch für Inline-<svg>-Elemente in HTML-Dokumenten, aber dies ist ein relativ neuer Konsens der HTML5-Spezifikationen: Andere Browser erweitern standardmäßig Inline-SVG auf die volle Größe des Darstellungsbereichs – entsprechend der Breite: 100vw height: 100vh — Dies ist die Standardgröße für SVG-Dateien, die direkt in ihrem eigenen Browser-Tab geöffnet werden. Internet Explorer reduziert den Unterschied, indem er eine Breite von 100 % und eine Höhe von 150 Pixeln für Bilder und Inline-SVG verwendet.

Mit anderen Worten, selbst wenn Sie 300𴡮 für eine perfekte Bildgröße halten (warum sollten Sie das auch tun), verlassen Sie sich nicht auf eine Standardgröße für <svg> in HTML.

Sie müssen nicht nur entscheiden, wie groß Ihr SVG sein soll, sondern auch, wie Sie will Ihre Grafik auf diese Größe skalieren. Im Folgenden beschreibe ich den Code, den Sie benötigen, um die gewünschte Skalierung für die häufigsten Situationen zu erhalten:

  • Skalierung auf eine bestimmte Größe, ohne das Bild zu verzerren
  • Skalieren auf eine bestimmte Größe, Dehnen oder Komprimieren der Grafik nach Bedarf
  • Anpassung an die verfügbare Breite unter Beibehaltung des Seitenverhältnisses von Breite zu Höhe
  • Ungleichmäßige Skalierung, sodass einige Teile der Grafik anders skalieren als andere

Aber zuerst: Wenn Sie die Skalierung Ihres SVG steuern möchten, müssen Sie sich mit den SVG-Skalierungsattributen und anderen verfügbaren Werkzeugen vertraut machen.

Andere Bilder skalieren, weil der Browser die Höhe, Breite und das Seitenverhältnis des Bildes kennt und alles zusammen anpasst. SVG mit diesen Eigenschaften zu versehen, ist der erste Schritt, um es skalieren zu können. Die Skalierung von SVG geht jedoch über das hinaus, was mit anderen Bildern möglich ist.

Die Attribute Höhe und Breite

Ein erster Blick auf die SVG-Spezifikationen lässt vermuten, dass die Höhen- und Breitenattribute des SVG-Elements der obersten Ebene implizit ein Seitenverhältnis festlegen und SVG daher wie andere Bilder skalieren. Es stimmt, dass die Einstellung von Höhe und Breite die Standardabmessungen überschreibt, wenn Sie SVG als Bild verwenden. Aber so einfach ist es natürlich nicht:

  • Wenn Sie ein <img> zum Einbetten Ihres SVG verwenden, wird die SVG-Skalierung durch das Festlegen von Höhe und Breite vorhersehbar in die meisten Browser, aber nicht im Internet Explorer. Mit CSS wie img < width: 100% height: auto > skaliert IE den Bildbereich automatisch, um das Seitenverhältnis width:height konstant zu halten, aber die tatsächliche Zeichnung wird nicht an die Skalierung der Bildabmessungen angepasst.
  • Wenn Sie ein <object> , <embed> oder <iframe> verwenden, um Ihr SVG einzubetten, wird durch Einstellen von Höhe und Breite auf dem <svg> die Größe des Frames nicht geändert. Sie erhalten nur Bildlaufleisten in Ihrem Iframe, wenn das SVG zu groß ist.
  • Wenn Sie Inline-SVG verwenden (d. h. <svg> direkt in Ihrem HTML5-Code), dann erfüllt das <svg>-Element eine doppelte Aufgabe, indem es den Bildbereich sowohl innerhalb der Webseite als auch innerhalb des SVG definiert. Jede Höhe oder Breite, die Sie für das SVG mit CSS festlegen, überschreibt die Höhen- und Breitenattribute im <svg> . Also eine Regel wie svg hebt die Abmessungen und das Seitenverhältnis auf, die Sie im Code festgelegt haben, und gibt Ihnen die Standardhöhe für Inline-SVG. Welche, wie oben erwähnt, je nach Browser entweder 150px oder 100vh beträgt.

Vergessen Sie also Höhe und Breite. Sie möchten das eigentlich nicht einstellen genau Höhe und Breite sowieso, Sie möchten, dass das SVG so skaliert wird, dass es der Breite und/oder Höhe entspricht, die Sie im CSS festgelegt haben. Was Sie möchten, ist ein Seitenverhältnis für das Bild und passen Sie den Zeichnungsmaßstab an. Sie möchten eine viewBox .

Die SVG viewBox ist eine ganze Menge Magie in einem kleinen Attribut zusammengefasst. Es ist das letzte Stück, das Vektorgrafiken macht Skalierbar Vektorgrafiken. Die viewBox macht viele Dinge:

  • Es definiert das Seitenverhältnis des Bildes.
  • Es definiert, wie alle Längen und Koordinaten, die innerhalb des SVG verwendet werden, skaliert werden sollen, um den verfügbaren Gesamtraum zu erfüllen.
  • Es definiert den Ursprung des SVG-Koordinatensystems, den Punkt mit x=0 und y=0.

Die viewBox ist ein Attribut des <svg>-Elements. Sein Wert ist eine Liste von vier Zahlen, die durch Leerzeichen oder Kommas getrennt sind: x, y, Breite, Höhe. Die Breite ist die Breite in Benutzerkoordinaten/px-Einheiten, innerhalb des SVG-Codes, das so skaliert werden sollte, dass es die Breite des Bereichs ausfüllt, in den Sie Ihr SVG zeichnen (die AnsichtHafen in SVG-Sprache). Ebenso ist die Höhe die Anzahl von px/Koordinaten, die skaliert werden sollen, um die verfügbare Höhe auszufüllen. Auch wenn Ihr SVG-Code andere Einheiten wie Zoll oder Zentimeter verwendet, werden diese ebenfalls skaliert, um der von der viewBox erstellten Gesamtskalierung zu entsprechen.

Die x- und y-Zahlen geben die Koordinaten im skalierten viewBox-Koordinatensystem an, die für die obere linke Ecke des SVG-Ansichtsfensters verwendet werden sollen. (Koordinaten steigen von links nach rechts und von oben nach unten, genauso wie beim Identifizieren von Seitenpositionen in JavaScript). Für eine einfache Skalierung können Sie beide Werte auf 0 setzen. Die x- und y-Werte sind jedoch für zwei Zwecke nützlich: zum Erstellen eines Koordinatensystems mit einem zentrierten Ursprung in der Zeichnung (dies kann das Definieren und Transformieren von Formen erleichtern) oder um Schneiden Sie ein Bild enger zu, als es ursprünglich definiert wurde.

Einige Beispiele für viewBox-Werte:

  • viewBox="0 0 100 100" : Definiert ein Koordinatensystem mit 100 Einheiten Breite und 100 Einheiten Höhe. Mit anderen Worten, wenn Ihr SVG einen in der Grafik zentrierten Kreis mit einem Radius von 50px enthält, würde er die Höhe oder Breite des SVG-Bildes ausfüllen, selbst wenn das Bild im Vollbildmodus angezeigt wurde. Wenn Ihr SVG ein Rechteck mit enthält, würde es auch fast den Bildschirm ausfüllen, da 1 Zoll = 96px in CSS ist und alle Längen gleich skaliert werden.
  • viewBox="5 0 90 100" : Fast die gleiche Ansicht, aber links und rechts um 5% beschnitten, so dass die Gesamtbreite = 90 Einheiten und die x-Koordinate links = 5 ist.
  • viewBox="-50 -50 100 100" : Eine Ansicht mit dem gleichen Maßstab, aber jetzt mit der oberen linken Ecke mit den Koordinaten (-50, -50). Was bedeutet, dass die unten rechts Ecke hat die Koordinaten (+50, +50). Alle bei (100, 100) gezeichneten Formen befinden sich weit außerhalb des Bildschirms. If you wanted to draw a circle that completely filled the image area, it would be centered at (0, 0).

Once you add a viewBox to your <svg> (and editors like Inkscape and Illustrator will add it by default), you can use that SVG file as an image, or as inline SVG code, and it will scale perfectly to fit within whatever size you give it. However, it still won’t scale quite like any other image. Standardmäßig, es wird nicht be stretched or distorted if you give it dimensions that don’t match the aspect ratio. Instead, the scale will be adjusted in order to preserve the aspect ratio defined in the code.

The preserveAspectRatio attribute

The viewBox attribute has a sidekick, preserveAspectRatio . It has no effect unless a viewBox exists to define the aspect ratio of the image. When there is a viewBox, preserveAspectRatio describes how the image should scale if the aspect ratio of the viewBox doesn’t match the aspect ratio of the viewport. Most of the time, the default behavior works pretty well: the image is scaled until it just fits both the height and width, and it is centered within any extra space.

Just like viewBox , preserveAspectRatio has a lot of information in a single attribute. The default behavior can be explicitly set with preserveAspectRatio="xMidYMid meet" . The first part, xMidYMid tells the browser to center the scaled viewBox region within the available viewport region, in both the x and y directions. You can replace Mid with Min or Max to align the graphic flush against one side or the other. Watch the camelCase capitalization, though: SVG is XML, and is therefore case sensitive. The x is lowercase but the Y is capital.

The second half of the default preserveAspectRatio , meet , is the part that tells the browser to scale the graphic until it just fits both height and width. It’s equivalent for CSS background images is background-size: contain . The alternative value for SVG is slice (equivalent to background-size: cover ). A slice value will scale the image to fit the more generous dimension, and slice off the extra. Except, it doesn’t necessarily Scheibe off the extra that depends on the value of the overflow property.

(Side note: If you wish every image could be centered in the dimensions you give it, instead of getting stretched or distorted, the new object-fit CSS property allows you to do the same with other image types.)

There’s also preserveAspectRatio="none" option to allow your SVG to scale exactly like a raster image (but with much better resolution), stretching or squishing to fit the height and width you give it.

How to Scale SVG to Fit within a Certain Size (without distorting the image)

Probably the most common requirement is to have an SVG icon scale to fit a specific size, without distortion. The viewBox attribute is really all you need here, although you can use preserveAspectRatio to adjust the alignment.

As mentioned, if you’re creating your SVG in a graphical editor, it’s probably already including a viewBox. However, you may want to adjust the viewBox to get the positioning just right. The pot-of-gold graphic has been given a viewBox="0 0 60 55" for the rest of the examples. That leaves some extra space around it to create a tight-cropped icon, you could use viewBox="4.5 1.5 51 49" . The following example also shows the effect of the default preserveAspectRatio , centering the graphic in the space provided:

How to Scale SVG to Fit the Available Width (and adjust the height to match)

SVG with a viewBox will scale to fit the height and width you give it. But what about auto-sizing? With raster images, you can set width oder height , and have the other scale to match. Can SVG do that?

It can, but it gets complicated. There are a couple different approaches to chose from, depending on how you are including your SVG.

Option 1: Use image auto-sizing

When an SVG file has a viewBox , and it is embedded within an <img> , browsers will (nearly always) scale the image to match the aspect ratio defined in the viewBox .

Internet Explorer, however, remains the bane of SVG. Although it normally works just fine, I used display: table-cell to lay out the figures in an earlier version of this example, and IE distorted the images in weird ways.

If you completely auto-size the image, Internet Explorer applies the standard default 300𴡮 size. However, other browsers will apply < width: 100% height: auto >by default if the image has a viewBox this behaviour is not defined in any specification.

So to recap: To auto-scale SVG used as <img> ,

  1. Set a viewBox attribute.
  2. Set at least eins of height or width.
  3. Don’t put it inside a table layout if you care about supporting Internet Explorer.

Option 2: Use CSS Background Images and the padding-bottom Hack

For the most part, using SVG as a CSS background image works much the same way as using it in an <img> (but with the added benefit that you can define raster fallbacks for old browsers). There are a few bugs with older browsers scaling the image after converting it to raster instead of before (i.e. pixelating it), but for the most part the viewBox is all you need.

However, auto-sizing isn’t an option for CSS background images after all, the image is angeblich to be secondary to the HTML content of the element. If you want the element to exactly match the aspect ratio of the image you’re going to use, you’re going to have to hack it a little bit.

There are a select number of CSS properties that allow you to adjust height-based attributes based on the available width. If you set the border , padding , or margin of a block-layout element to percentage values, the percentages will be calculated relative to the available Breite of the container, even for the oben und Unterseite borders, padding, and margin.

The intended purpose is to create evenly-sized borders and padding even when height is automatic. But that’s beside the point. For our purposes, the key point is that you can adjust the total height of an element in proportion to the width. In other words, you can control the aspect ratio. To create a <div> with 100% width that exactly matches the 4:3 aspect ratio of an image you’re using as its background, you can use:

  • To get the desired height as a percentage of the available width, you multiply the percentage width by the desired height factor, divided by the desired width factor.
  • If you want to support browsers that don’t support calc() , you’ll need to do the math yourself (or with a CSS pre-processor).
  • If you by default set every element to box-sizing: border-box , you’ll have to re-set it to use box-sizing: content-box . We want it to be height: 0 Plus padding, after all.
  • The padding-bottom property is used instead of padding-top because of problems in IE5. Although you’re probably not worried about supporting IE5, you might as well be consistent. It is called the padding-bottom hack, after all.

For the pot-of-gold image, the aspect ratio was 60:55, which works out as bottom padding of 92%. In action, it looks like this:

Option 3: Use Inline SVG and the latest Blink/Firefox Browsers

SVG images are nice, but in many cases you’ll prefer to use inline SVG. Inline SVG reduces the number of HTTP requests, allows user interactions, and can be modified by the CSS in your main web page. But will it scale?

It will if you’re using the latest Firefox or Blink browsers. Just set the viewBox on your <svg> , and set one of height or width to auto . The browser will adjust it so that the overall aspect ratio matches the viewBox . Schön.

But chances are, these aren’t the only browsers you need to support.

Viele browsers—IE, Safari, and versions of Opera and Chrome released prior to summer 2014—will not auto-size inline SVG. If you don’t specify both height and width, these browsers will apply their usual default sizes, which as mentioned previously will be different for different browsers. The image will scale to fit inside that height or width, again leaving extra whitespace around it. Again, there are also inconsistencies in what happens if you leave both height und width auto .

The solution is to again use the padding-bottom hack to control the aspect ratio yourself. The easiest approach, which works for inline SVG as well as <object> , <iframe> and other replaced elements like <video> , is to use a container element.

Option 4: Use the padding-bottom Hack on a Container

To use a container <div> , add classes or inline styles to the div to give it the correct aspect ratio, as was done above when using a background image. But also set position: relative on the container, so that it will become the reference frame for absolutely positioned content. Then set the SVG (or other object) to position: absolute , with height and width of 100%. The absolute positioning is required so that the percentages will be calculated relative to the height of the <div> einschließlich the padding, and not relative to the zero-height content area.

Unless you have a lot of graphics with the same aspect ratio, it usually makes sense to declare the padding-bottom inline, so that it is right next to the viewBox it needs to match:

The container approach works, but at the cost of an extra wrapper element in your markup. And it isn’t a general-purpose container, either: it’s a container that has to be customized to the exact aspect ratio your SVG needs. Things get even trickier if you don’t want it to scale to a full 100% you’ll need to use another wrapper <div> to set the desired width and other positioning attributes. I personally would rather keep all information about the SVG aspect ratio in the SVG code itself. To do that for inline SVG, you’re going to need to tell the browser to draw outside the lines, and into the padding.

Option 5: Use the padding-bottom Hack on an Inline <svg> Element

To use the padding-bottom hack to control the aspect ratio of the total <svg> area, the official height is going to be (essentially) zero. With the default preserveAspectRatio value, the graphic would be scaled down to nothing. Instead, you want your graphic to stretch to cover the entire width you give it, and to spill out onto the padding area you have carefully set to the correct aspect ratio.

Again, I like to use inline styles for the padding-bottom aspect ratio, since it needs to be customized to the viewBox attribute. In the example that follows, I also use it for the other style properties, although you could use a class if you have many graphics that need the same effects:

There are a few other details in there:

  • The height is 1px, not 0, otherwise the SVG may not be drawn at all (Firefox) or may not scale at all (Chrome).
  • The preserveAspectRatio uses YMin for the vertical alignment, so that the graphic is aligned neatly against the top of the <svg> content area, spilling out into the bottom padding.
  • Although overflow: visible may be the default for HTML, it needs to be set explicitly for SVG.

If you want the SVG to scale to some percentage less than 100% width, remember to adjust padding-bottom accordingly. Or use a wrapper <div> to set the size.

How to Scale, Stretch, and Squish SVG to Exactly Fit a Certain Size

Although preserving the aspect ratio is usually desirable, sometimes the image is an abstract or flexible image that you want to stretch to fit.

One option to stretch to fit is to use percentage values for all size and position attributes in the SVG.

Things to note about percentages and SVG:

  • If you’re using percentages to stretch and squish, don’t include a viewBox (although you can specify default height and width).
  • Some lengths in SVG aren’t clearly associated with either height or width for example, the radius of a circle. If you use percentage values in these cases, the length will be calculated as a geometric average (square root of the sum of the squares, divided by square root of 2) of the equivalent percentage of height and width. This preserves the Pythagorean theorem relationship of diagonal lines to rectangular lines, but is otherwise somewhat confusing.
  • Many lengths in SVG kann nicht be specified with percentages, most importantly the coordinates of <path> and <polygon> elements.

Option 2: Use preserveAspectRatio="none"

If you want a flexibly scaling SVG that also includes SVG paths, you need to use a viewBox plus preserveAspectRatio="none" . Here’s a slightly fancier version of that rainbow, with puffy cloud

Be aware that with preserveAspectRatio="none" , everything gets stretched or squished equally, just as if you were unevenly scaling other image types. That means that circles get stretched into ellipses, and text will be distorted as well. To avoid that, you’ll need to use a mixture of scaling approaches.

How to Scale Parts of an SVG Separately

The viewBox and preserveAspectRatio attributes are incredibly flexible. Once you stop thinking of SVG as just another image format, you can start asking yourself wie you want your graphic to scale as the window changes size.

An important thing to realize is that you don’t need to define a single viewBox and preserveAspectRatio option for the entire SVG. Instead, you can use nested <svg> elements, each with their own scaling attributes, to have different parts of your graphic scale independently. (You can also use these attributes on <symbol> and <pattern> elements, and you can use preserveAspectRatio on other images embedded in your SVG.) With this approach, you can create a header graphic that stretches to fill a widescreen display without taking excessive height as well:


The UCS Follow system variable

Changing from one UCS to another does not change the view of the drawing unless the UCSFOLLOW system variable is turned on (set to 1), in which case a plan view of the new UCS is displayed.

At the command prompt enter "UCSFOLLOW", AutoCAD prompts:

New value for UCSFOLLOW <0>:

Entering "1" turns UCSFOLLOW on and "0" turns UCSFOLLOW off.

UCSFOLLOW can be particularly useful if you are working in plan on a scheme which is orientated in such a way that it is awkward to work with. Rather than using the Drehen command to rotate the whole drawing you could set UCSFOLLOW zu 1 and create a UCS which is in your preferred working orientation. UCSFOLLOW will then simply rotate your view (see the illustration below).

A plan view of a site in the
World co-ordinate system.
A plan view of the same site with
ucsfollow set to 1 and a UCS which
is rotated about the Z axis.


Planar Bubble (Clr7/Wiz7 spell, source: Spell Compendium) copies all planar traits from target creature's native plane. Area: 10-foot-radius, mobile duration: 10 minutes per casterlevel.

Planar Bubble (Planar Shepherd classfeature, ECL 10, source: Faiths of Eberron) same as the spell, except that a Planar Shepherd can only cast it on herself, and thus can't pick a different plane each time. Area: 20-foot-radius, mobile duration: concentration + 1d10 rounds.

Orrery of the Planes (item, 50,000gp, source: Eberron Campaign Setting) copies one magic trait from any outer plane. Area: 60-foot-radius, stationary while in use duration: no maximum duration, can be turned on an off.

Anchor Plane (Psion8 power, source: Faiths of Eberron) copies one planar trait from any plane. Area: 150-foot-radius, stationary duration: permanent.

Intensify Manifest Zone (Clr7/Druid7/Psion7, source: Faiths of Eberron) permanently adds one more planar trait to an existing manifest zone, such as the one created by Anchor Plane or Orrery of the Planes.

Precipitate Breach (Wiz5 spell, source: Planar Handbook) copies one alignment, elemental/energy, or magic trait. Unfortunately, you can't pick from which plane, it's just random. Area: 10d10-foot-radius, stationary duration: 1d6 days.

Precipitate Complete Breach (Wiz9 spell, source: Planar Handbook) creates an inter-planar portal whose surroundings (on both ends) are affected by all traits from both planes. Unfortunately, you still can't pick the destination, it's just random. Area: 10d10-foot-radius, stationary duration: 1d6 days.

Acorn of Far Travel (Druid2/Ranger2 spell, source: web) is probably not intended to interact with planar travel, the spell's author clearly didn't consider it. But a literal reading of "As long as you carry the acorn, you are considered to be standing under that oak tree's canopy (and thus within an area of forested terrain)." might imply that you're subject to the planar traits of wherever the tree is, too. Area: self-only, mobile duration: 1 day per casterlevel.

Portal Seepage (source: FRCS and PGtF for how to craft permanent portals, and Underdark for the seepage effect) Sufficiently old portals may transmit planar traits from one side to the other. The books treat this as an undesired but common side-effect, and don't provide any rules for hurrying it up on purpose. Area: typically 5-foot-radius per 100 years of age, stationary duration: permanent.