Mehr

Entfernen Sie innere Polygone postgis

Entfernen Sie innere Polygone postgis


Ich versuche, innere Polygone mit Postgis zu entfernen. Ich habe eine Routine erstellt, die fortgesetzt wird in:

Aus einer Polygontabelle mit einer eindeutigen ID:

  • Erstellen Sie eine Linienfolgentabelle aus Polygon
  • In Postgis importieren
  • Holen Sie sich die Länge jeder Zeile

Jetzt habe ich eine Tabelle mit beispielsweise 5 Linienfolgen für jede ID, jede Linienfolge war ein Polygon, und ich möchte NUR die längste Linie von jeder ID erhalten.

Dafür habe ich eine Auswahl, aber ich weiß nicht, wie ich die Geometrie gruppieren soll, um NUR die längste Linie zu erhalten

wähle id, geom als Länge aus esp_lines group by id

Ich muss es nach einem anderen Feld gruppieren, weiß aber nicht welches.

Die andere Lösung, die ich gefunden habe, ist:

wähle id, max(geom) als Länge aus esp_lines group by id

aber max(geom) gibt mir nicht das erwartete Ergebnis (die längste Linienfolge)

Weiß jemand, ob es eine Funktion gibt, um die längste Zeilenfolge einer Gruppe zu erhalten?


Sie suchen Außenring

SELECT gid, ST_ExteriorRing(the_geom) AS ering FROM sometable;

Polygon über die Sperrschicht gießen

In Altium Designer verwende ich Keep-out-Layer-Linien, um die Einschränkungen des Platinenrandabstands des Herstellers durchzusetzen. Das Problem ist, dass das Polygon der obersten Ebene um diese Linien gegossen wird, was nicht notwendig ist.

Wie kann ich bewirken, dass sich der Polygonguss so verhält, als wäre die Keep-Out-Ebene eine Siebdruckebene, dh ignorieren Sie sie einfach.

Wenn ich die Abstandsregel auf 0 setze oder "NOT OnLayer('Keep-Out Layer') "übereinstimme, hat es keinen Abstand, aber immer noch kein Kupfer direkt unter der Linie.


2 Antworten 2

Es sieht so aus, als ob sich ein Gewindebund von einer Seite zur anderen durchschraubt. Ich denke, wenn Sie einen kleinen Schraubendreher / Durchschlag verwenden, um es rückgängig zu machen (wie mit Pfeilen gekennzeichnet), werden die beiden Hälften freigegeben:

Wenn Sie lange Schrauben entfernt haben (in diesen Aussparungslöchern, die ich auf den Bildern sehe), dann hielten diese die beiden Flansche zusammen. Alles, was sie hält, ist die Farbe. Versuchen Sie, sie vorsichtig von der lackierten Oberfläche zu lösen und sie sollten gut auseinander gleiten.

Wenn dies nicht der Fall war, da Sie die verbleibende Hardware sowieso wegwerfen, hebeln Sie diese Halteklammern hoch und entfernen Sie die dünnen Platten, die sie halten. Sehen Sie, was Sie dann erreichen können.


2 Antworten 2

Sie haben zwei Möglichkeiten, damit umzugehen.

Die erste erfolgt über die Längeneinheitseinstellungen auf der Registerkarte „Szene“ des Eigenschaftenfensters (unten rechts in der Abbildung unten). Sie können die Szeneneinheiten einfach auf Millimeter statt auf Meter einstellen (was die Standardeinstellung ist), und die Tests der 3D-Druck-Toolbox werden entsprechend aktualisiert.

Die andere besteht darin, den Dickenschwellenwert in den Dickentests der 3D-Druck-Toolbox auf das von Ihnen angestrebte Limit (das Ihren 3D-Druckwerkzeugen und -materialien entspricht) zu ändern.

Die tatsächliche Dicke des Modells sollte im 3D-Modellierungsprogramm selbst erstellt werden. Wenn Sie nach dem Export wissen möchten, wie dick das Modell ist, müssen Sie möglicherweise ein sekundäres Programm wie Meshmixer verwenden. Dieses Programm kann Ihnen in Millimetern sagen, wie dick bestimmte Objekte sind. Ich habe diese Lektion gelernt, als ich zum ersten Mal meinen 3D-gedruckten Helm herstellte und als ich noch die Seile lernte, habe ich gelernt, dass ich die Dicke des Netzes in Blender erhöhen und untersuchen musste, um einen stabileren Build zu erhalten es in Meshmixer, bevor ich es zum Drucken versende.


Entfernen Sie innere Polygone postgis - Geographische Informationssysteme

Wie kann ich ein Gitter über einem Polygon erstellen und dann die Punkte in das Gitter einfügen?

Soweit ich weiß, verwende ich Wie erstelle ich ein regelmäßiges Polygongitter in PostGIS? Anleitung zum Erstellen des Rasters. Ich weiß jedoch nicht, wie ich das Raster auf der Karte verschieben soll.

Ich plane, das Raster auf der Karte von Australien und Neuseeland zu erstellen.

Also, Derek, versuchen wir gemeinsam im Kinderpool PostgreSQL / PostGIS und QGIS zu schwimmen. Wenn ich deine Frage richtig verstanden habe, bist du mit mir gesegelt.

Siehe Abbildung 1 1) Um ein Raster zu erstellen, führen Sie die folgenden Abfragen in pgAdmin aus:

1.1) CREATE TABLE grid_australia_1gr AS SELECT * FROM st_createfishnet (43,69,1.0,1,0,111.0, -51.0)

1.2) UPDATE grid_australia_1gr SET geom = ST_SetSRID (geom, 4326) 1.3) CREATE INDEX grid_australia_1gr_geom ON grid_australia_1gr VERWENDUNG von gist (geom) 1.4) ANALYZE grid_australia_1gr


Die Erläuterung zu Punkt 1.1. so wichtig für uns:  In meinem Beispiel habe ich mich entschieden, ein Kartenraster in 1-Grad-Schritten in Breiten- und Längengrad zu bauen, dafür habe ich die Koordinaten der unteren linken (südwestlichen) Ecke des Rasters (Breitengrad, also die Staaten sind auf der Südhalbkugel sie haben negative Werte) B = -51,0 der Grad ist genau und (Längengrad) L = 111,0 Grad genau, dann habe ich die Grenzen definiert, auf die 2 Staaten fallen und ihre Längengrade bestimmt ​​of 69 Grad und 43 Grad Breite. Okay, ich habe die Parameter für diese Funktion definiert. Der erste und zweite Parameter der Funktion, die vom Programmierer unter dem "Spitznamen" Kaveh (URL der Ressource - https: gist.github.com/ka7eh) entwickelt wurde, nutzen diese Gelegenheit, um ihm dafür zu danken, die Anzahl der Zeilen und Spalten , die zweite und dritte ist die Gittergröße der Gitterzelle in Grad, die fünfte und sechste sind unser Ursprung.


Siehe Abbildung 2 2) In der Tabelle grid_australia_1gr müssen Sie zwei Felder namens "col" und "row" löschen, einen Primärschlüssel erstellen, zum Beispiel ein gid, und ein Limit dafür festlegen. Als nächstes habe ich eine Tabelle erstellt

Tabelle grid_australia_mpt_dump als SELECT (ST_Dumppoints (geom)) erstellen. geom FROM grid_australia_mpt Um Punkte vom Typ MultiPoint in Point umzuwandeln

3) Führen Sie in pgAdmin die folgende Abfrage aus

Tabelle erstellen grid_australia_mpt_select as SELECT grid_australia_1gr.gid, grid_australia_1gr.geom, count (*) als cnt FROM grid_australia_mpt_dump, grid_australia_1gr WHERE st_intersects (grid_australia_mpt_dump.geom, grid_australia_.gid GROUP_grid_1_grid_grid_dump


Tschebyscheff-Polynome über $C[-1,1]$ als orthogonales System

Das Folgende stammt aus Fourier Series and Integral Transforms von A. Pinkus und S. Zafrany, Kapitel 1, Frage 2:

  1. Dies ist ein inneres Produkt über $C[-1,1]$
  2. Der Satz $<=>cos(narccos) vert nin mathbb>$ ist orthogonal.
  3. Durch Einsetzen von $ heta = arccos x$ beweisen Sie, dass $T_n$ für alle $n$ ein Polynom n Grades von $x$ ist.

Ich habe (1) und (2) bewiesen, letzteres mit der in (3) erwähnten Substitution.
Es ist einfach, dass $left<T_n,T_n ight> >0$ unter Verwendung der Tatsache, dass der Integrand um 0 ungerade ist. Für $m eq n$ erhalten wir:
$left<T_n,T_m ight>=int_<-1>^1 frac> dx= int_<-1>^1 frac<2sqrt<1-x^2>>dx= int_<0>^pi left(cos((m+n) heta) + cos((mn) heta) ight) d heta=0$.

Ich bin mir jedoch nicht sicher, wie (3) mit all dem zusammenhängt oder wie man es anhand der obigen Informationen herleitet.


Es sieht so aus, als würden Sie versuchen, ST_Contains für Geografietypen zu verwenden, aber diese Funktion funktioniert nur für Geometrietypen.

Wenn du damit einverstanden bist schneidet räumliche Beziehung (siehe DE-9IM), dann verwenden Sie ST_Intersects(geography, geography).

Konvertieren Sie den AWK-Befehl in eine SQLite-Abfrage

SQLite ist eine eingebettete Datenbank, d. h. sie ist darauf ausgelegt, zusammen mit einer „echten“ Programmiersprache verwendet zu werden. Es ist möglich, diese Protokolldatei in eine Datenbankdatei zu importieren, aber der Sinn einer Datenbank besteht darin, die Daten zu speichern, was kein direktes Ziel ist.

So drehen Sie ein Array in ein anderes Array in Ruby

Hier ist eine Möglichkeit, einen Zwischen-Hash-of-Hash zu verwenden Das h sieht am Ende so aus <"Alaska"=><"Rain"=>"3", "Snow"=>"4">, "Alabama"=> <"Snow"=>"2", "Hail"=>"1">> myArray = [["Alaska","Rain","3"],["Alaska","Snow","4"] ,["Alabama","Snow","2"],["Alabama","Hail","1"]] myFields = ["Snow","Rain","Hail"] h = Hash.new< |h, k| h[k] = <>> myArray.each <|i, j, k| h[i][j] = k >p [["Zustand"] + myFields] + h.map <|k, v| [k] + v.values_at(*myFields)>Ausgabe.

Addiere 1 zum datediff-Ergebnis, wenn die Zeit 14:30 oder 14:30 Uhr vergeht

Könnte sein: SELECT reservations.customerid, DateDiff("d",reservations.checkin_date, Date()) + Abs(DateDiff("s", #14:30#, Time()) > 0)AS Due_nights FROM Reservierungen .

SQL Mehrere LIKE-Anweisungen

MIT CTE AS ( WERT WÄHLEN VON ( WERTE ('B79'), ('BB1'), ('BB10'), ('BB11'), ('BB12'), ('BB18'), ('BB2') , ('BB3'), ('BB4'), ('BB5'), ('BB6'), ('BB8'), ('BB9'), ('BB94'), ('BD1'), ( 'BD10'), ('BD11'), ('BD12'), ('BD13'), ('BD14'), ('BD15'), ('BD16'), ('BD17'), ('BD18 '), ('BD19'), ('BD2'), ('BD20'), ('BD21'), ('BD22'), ('BD3'), ('BD4'), ('BD5') , ('BD6') ) V(WERT) ) SELECT * FROM tbl_ClientFile.

Wie wähle ich die nächste Zeile nach der Auswahl in SQL Server aus?

Die Abfrage kann wie folgt geschrieben werden: WITH Base AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY Shift_Date) RN FROM #Table1 ) , WithC AS ( SELECT * FROM Base WHERE Shift2 = 'C' ) SELECT * FROM WithC UNION SELECT WithCNext .* FROM WithC C LEFT JOIN Base WithCNext ON.

Holen Sie sich den tatsächlichen Wert eines booleschen Attributs

Die Attributmethode des Page-Object-Gems führt keine Formatierung des Attributwerts durch. Es gibt einfach zurück, was von Selenium-WebDriver (oder Watir-Webdriver) zurückgegeben wird. Bei booleschen Attributen bedeutet dies, dass true oder false zurückgegeben wird. Aus der Selenium-WebDriver#attribute-Dokumentation: Folgendes gilt als „boolean“.

Ruby-Zugriffswörter in Zeichenfolge

Was Sie tun, wird auf das vierte Zeichen von String s zugreifen. Teilen Sie die Zeichenfolge in ein Array auf und greifen Sie dann wie folgt auf das vierte Element zu. puts s.split[3] Hinweis: Der Aufruf von split ohne Parameter trennt den String durch Leerzeichen. Bearbeiten: Indizes reparieren. Der Index beginnt bei 0. Das bedeutet s.split[3] wird.

Benutzerdefinierte SQL-Suche mit Sonderzeichen

Hier ist mein Versuch, Jeff Modens DelimitedSplit8k zu verwenden, um die durch Kommas getrennten Werte aufzuteilen. Hier ist zunächst die Splitter-Funktion (siehe Artikel für Aktualisierungen des Skripts): CREATE FUNCTION [dbo].[DelimitedSplit8K]( @pString VARCHAR(8000), @pDelimiter CHAR(1) ) RETURNS TABLE WITH SCHEMABINDING AS RETURN WITH E1 (N) WIE ( WÄHLEN 1 VERBINDUNG ALLE WÄHLEN.

SQL-Gruppe nach mehreren Kategorien

Fügen Sie einfach eine case-Anweisung für den group by-Ausdruck ein: SELECT (CASE WHEN Categories.name like 'Cat3%' THEN 'Cat3' ELSE Categories.name END) als Name, sum(locations.name = 'loc 1' ) als Location1, sum(locations.name = 'loc 2') als Location2, sum(locations.name = 'loc 3') als Location3, count(*) als total FROM . GRUPPE NACH (FALL.

Erhalten Sie eine eindeutige Zeile für einzelne Spalte, wenn Duplikate vorhanden sind

SELECT MIN(date),thread_id FROM Messages GROUP BY thread_id HAVING COUNT(thread_id) > 1 .

Was ist Rack::Utils.multipart_part_limit in Rails und welche Funktion erfüllt es?

Kurz gesagt, dieser Wert begrenzt die Anzahl der gleichzeitig geöffneten Dateien für mehrteilige Anforderungen. Um besser zu verstehen, was mehrteilig ist, können Sie diese Frage sehen. Der Grund für diese Einschränkung ist die Möglichkeit, Ihre App besser an Ihren Server anzupassen. Wenn Sie zu viele Dateien unter geöffnet haben.

SQL: kein ORDER BY in verschachtelten Abfragen überwinden

Verwenden Sie stattdessen einen Join: SELECT a, b FROM t JOIN (SELECT DISTINCT date FROM t ORDER BY date DESC LIMIT 2) tt on t.date = tt.date .

T-SQL-Anordnung einer rekursiven Abfrage - Eltern-/Kind-Struktur

Am einfachsten wäre es, die Tasten auf eine feste Länge aufzufüllen. z.B. 038.007 wird vor 038.012 bestellt Aber die Polsterlänge müsste sicher für die größte Taskid sein. Sie können Ihren Pfad jedoch aus Gründen der Lesbarkeit beschneiden und ein zusätzliches aufgefülltes Feld zum Sortieren erstellen.

Ruby – Holen Sie sich einen XML-Knotenwert

Versuchen Sie, CSS anstelle von xpath zu verwenden, dies wird für Sie funktionieren, doc = Nokogiri::XML(response.body) values ​​= doc.css('Name').select<|name| name.text>.join',' puts values ​​=> Ram,Sam .

Standard das Jahr basierend auf dem Monatswert

SQL Server ist in seiner Vorgehensweise korrekt, da Sie die Rückgabe einer zusätzlichen Zeile anfordern, die, wenn sie jetzt 2015-06-22 ausgeführt wird, "2016" zurückgeben würde. Ihre eindeutige Funktion funktioniert nur bei der ersten Auswahl, die Sie vorgenommen haben, also sind dies Ihre Optionen: 1) Verwenden Sie cte's mit Distinkten mit subq1 (syear, eyear.

Inner Join 3 Tabellen pl/sql

Das Problem ist, dass Sie den Alias ​​C dort verwenden, wo Sie dies nicht sollten, mit der Zählfunktion. Dies: C.Count(C.column6) sollte sein: Count(C.column6) und die gleiche Änderung gilt für die order by-Klausel (die möglicherweise die falsche Spalte zählt - sollte es nicht column6 sein?): order by C. Anzahl(Spalte5) Besch.

Der schnellste Weg, um eine Gruppierungsspalte hinzuzufügen, die das Ergebnis in 4 Zeilen teilt

Versuchen Sie Folgendes: SELECT col, (ROW_NUMBER() OVER (ORDER BY col) - 1) / 4 + 1 AS grp FROM mytable grp ist gleich 1 für die ersten vier Zeilen, gleich 2 für die nächsten vier, gleich 3 für die nächsten vier usw. Demo hier Alternativ kann auch folgendes.

So verbinden Sie das Ergebnis einer Group by Query mit einer anderen Tabelle

Sie haben hier einen Fehler von tblUsers u,a.Login_Name Versuchen Sie, diesen Codeabschnitt a.Login_Name zu verschieben Wählen Sie u.User_Id, a.Login_Name from tblUsers u inner join (SELECT s.Login_Name Login_Name, COUNT(s.s1CIDNumber)as abc FROM [dbSuppHousing].[dbo].[tblSurvey] s Gruppe nach s.Login_Name) a on u.Login_Name=a.Login_Name .

Fremdschlüssel in C#

Sie möchten eine Beziehung in zwei Tabellen erstellen. Siehe diesen Link http://www.c-sharpcorner.com/Blogs/5608/create-a-relationship-between-two-dataset-tables.aspx.

SQL-Variable varchar fügt Fragezeichen ein

Es gibt ein nicht erkennbares Zeichen in Ihrer Zeichenfolge, das das ? gibt. Löschen Sie den Wert und geben Sie ihn erneut ein. siehe meinen obigen Screenshot.

Mysql_real_escape_string erstellt nur im Server, nicht im lokalen

Auf Ihrem Server sind magische Anführungszeichen aktiviert und auf Ihrem lokalen Server nicht. Entfernen Sie es mit dem folgenden Satz set_magic_quotes_runtime(0) Da diese Funktion veraltet ist und in PHP 7.0 gelöscht wird, empfehle ich Ihnen, Ihre php.ini mit den folgenden Sätzen zu ändern: magic_quotes_gpc = Off magic_quotes_runtime = Off Wenn Sie.

Werte als Spalte abrufen

Wenn die Typen festgelegt sind (nur IMPRESSION und CLICK), können Sie eine Abfrage wie diese verwenden: SELECT Überschrift, SUM(tracking_type='IMPRESSION') AS Impressions, SUM(tracking_type='CLICK') AS Klicks FROM Tracking GROUP BY Überschrift .

MySQL: Wählen Sie mehrere Zeilen basierend auf mehreren Schlüsseln in einer bestimmten Spalte

Wenn Sie nach Datensätzen suchen, die mit beiden Kriterien übereinstimmen, können Sie hier `item_id` FROM `item_meta` auswählen, wobei ( `meta_key` = 'category' and `meta_value` = 'Bungalow' ) oder ( `meta_key ` = 'location' AND `meta_value` = 'Lagos' ) gruppieren nach `item_id` mit count(*)=2 .

Stapelebene zu tief wegen Rekursion

Wenn Sie die Beziehung richtig ausdrücken, wird ActiveRecord dies für Sie tun. Klasse Tweet gehört_to :original_tweet, class_name: Tweet has_many :retweets, class_name: Tweet, abhängig: :destroy, inverse_of :original_tweet end Tweet.last.destroy # zerstört nun abhängige .

Beim Rendern vom Controller scheint die current_page-Methode nicht zu funktionieren

Sie können content_for und yields verwenden, um einen Standardwert in Ihrem Layout zu erstellen, den Ansichten überschreiben können. # layouts/application.html.erb: <% if content_for?(:banner) %> <%= yield(:banner) %> <% else %> <div > <h1>Dies ist die Standardeinstellung. </h1> </div> <% end %> /users/signup.html.erb: <%- content_for :banner, flush: true do -%> <!-- weiter.

Abfrage, wie oft ein Ereignis zu einem bestimmten Zeitpunkt aufgetreten ist

Dies könnte mit einer benutzerdefinierten Variablen erfolgen, die schneller ist, wie bereits in der vorherigen Antwort erwähnt. Dies erfordert das Erstellen einer inkrementellen Variable für jede Gruppe, abhängig von einer bestimmten Reihenfolge. Und aus dem angegebenen Datensatz seinen Benutzer und sein Datum. Hier, wie Sie es erreichen können wählen Sie Benutzer, Datum, Kaufanzahl.

Nimm den Tausender-Wert in SQL

SELECT CONVERT(INT,YourColumn) % 1000 FROM dbo.YourTable .

Wählen Sie Aussage zu zwei verschiedenen Ansichten

Ja, Sie können in der SELECT-Abfrage zwei verschiedene Ansichten verwenden. Sie müssen sie VERBINDEN, wenn sie eine übereinstimmende Spalte haben. Behandeln Sie einfach zwei verschiedene Ansichten wie zwei verschiedene Tabellen, wenn Sie sie in der SELECT-Klausel verwenden. WÄHLEN SIE vw1.a, vw2.b VON View1 vw1 INNER JOIN View2 vw2 EIN vw1.id.

Ruby on Rails - Hilfe beim Hinzufügen von Badges zur Anwendung

Werfen Sie einen Blick auf Verdienst Edelstein. Auch wenn Sie Ihr eigenes Badge-System von Grund auf neu entwickeln möchten, enthält dieses Juwel viele schöne Lösungen, die Sie verwenden können. https://github.com/merit-gem/merit

Ruby: Wie kopiert man das mehrdimensionale Array in ein neues Array?

dup erstellt keine tiefe Kopie, sondern kopiert nur das äußerste Objekt. Aus diesen Dokumenten: Erzeugt eine flache Kopie von obj – die Instanzvariablen von obj werden kopiert, aber nicht die Objekte, auf die sie verweisen. dup kopiert den fehlerhaften Zustand von obj. Wenn Sie sich nicht sicher sind, wie tief Ihr Objekt ist.

Gleiche Enum-Werte für mehrere Spalten

Vielleicht macht es den Planeten als ein anderes Modell extrahieren? def Planet Enum-Typ: %w(Earth Mars Jupiter) end class PlanetEdge < ActiveRecord::Base gehört_to :first_planet, class_name: 'Planet' gehört_to :second_planet, class_name: 'Planet' end Sie können einen PlanetEdge erstellen, indem Sie accepts_nested_attributes_for: class < ActiveRecord::Base gehört_to :first_planet, class_name: 'Planet' gehört_to :second_planet, class_name: 'Planet'.

Verwenden von Sum in If in Mysql

Die Verwendung von am wenigsten wäre viel einfacher: SELECT LEAST(SUM(my_field), 86400) FROM my_table .

Rails Shared Controller-Aktionen

Sie sollten Aktionen an den eingeschlossenen Block und perform_search_on an den class_methods-Block übergeben. Modul Durchsuchbar erweitern ActiveSupport::Concern class_methods do def perform_search_on(klass, Associations = <>) . end end includiert do def filter response_to do |format| format.json < render 'api/search/filters.json' >end end end end Wenn Ihr durchsuchbares Modul a.

Boolesche Ruby-Logik: Einige Variablen sind wahr

Instanzvariable über Hash in Ruby zugänglich machen

Es ist nicht "über Hash", es ist "Array-Zugriffs"-Operator. Um es zu implementieren, müssen Sie Methoden definieren: def [](*keys) # Definiere hier end def []=(*keys, value) # Definiere hier end Natürlich, wenn du nicht mehrere Schlüssel für den Zugriff auf ein Element, Sie können nur key anstelle von verwenden.

Oracle-SQL-Fehler Fall, wenn dann sonst

Vielleicht ist es das, was Sie wollen? Wenn Zeilen in SecondTable vorhanden sind, führen Sie die zweite EXISTS aus: SELECT * FROM FirstTable WHERE RowProcessed = 'N' AND (NOT EXISTS (SELECT 1 from SecondTable) ODER EXISTS (SELECT 1 FROM SecondTable WHERE FirstTable.Key = SecondTable.Key and SecondTable .) .RowProcessed = 'Y')) AND OtherConditions .

Kann mir jemand erklären, warum diese Aussage ein Ausschluss ist?

Ich kann erklären. eine Abfrage, die Ihrer sehr nahe kommt. Lassen Sie mich es ändern in: SELECT * FROM [table].[dbo].[one] AS t1 LEFT JOIN [table].[dbo].[one] AS t2 ON (t1.ColumnX = t2.ColumnX AND t2.columnY = 1) WHERE t2.tableID IS NULL Diese Abfrage ruft alle Zeilen von t1 ab und prüft dann, ob.

Rails Basic Auth funktioniert nicht richtig

@user.keys.each tun |key| username == key.api_id && password == key.api_key end Dieser Code gibt den Wert .each zurück, was der Sammlung entspricht, für die er aufgerufen wird (in diesem Fall @user.keys). Da es sich um einen wahrheitsgetreuen Wert handelt, wird die Prüfung immer bestanden, unabhängig von den Ergebnissen der Auswertung.

Der im PIVOT-Operator angegebene Spaltenname „FirstName“ steht in Konflikt mit dem vorhandenen Spaltennamen im PIVOT-Argument

Sie könnten CTE verwenden, um Ihre Nullwerte zu definieren und dann die Daten in etwa wie folgt zu Pivotieren: WITH t AS ( SELECT isnull(jan, 0) AS jan ,isnull(feb, 0) AS feb ,sum(data) AS Betrag FROM your_table - -Ändern Sie dies so, dass es Ihrem Tabellennamen entspricht GROUP BY jan,feb ) SELECT * FROM (.

Bereinigen der Datenbank – Anzahl bereinigter/nicht bereinigter Tabellen

Die einzige Möglichkeit, dies zu tun, besteht darin, manuell eine Zählung (*) für alle Ihre Tabellen auszuführen, die nach dem bestimmten Datumsfeld filtern. Der Grund dafür ist, dass eine Tabelle möglicherweise eine Spalte "CreatedDate" enthält, die Sie überprüfen müssen, ob sie >30 Tage alt ist, während eine andere möglicherweise hat.

Titelsuche in SQL mit Ersetzung von Störwörtern [angehalten]

Ich denke, Sie wollen so etwas: DECLARE @nw TABLE ( sn INT, [key] VARCHAR(100) ) INSERT INTO @nw VALUES ( 1, 'and' ), ( 2, 'on' ), ( 3, 'of ' ), ( 4, 'der' ), ( 5, 'view' ) DECLARE @s VARCHAR(100) = 'view This of is the Man'.

Behalten Sie führende Nullen bei, wenn Sie String in Integer konvertieren

Kurze Antwort: Nein, das geht nicht. 2.1.5 :001 > 0001 => 1 0001 macht als Integer überhaupt keinen Sinn. In der Integer-Welt ist 0001 genau wie 1. Darüber hinaus ist die Anzahl der führenden Ganzzahlen im Allgemeinen irrelevant, es sei denn, Sie müssen eine Ganzzahl für die Anzeige auffüllen, aber in diesem Fall.

Wählen Sie Anzahl Spalten gruppieren nach Nein

das wird funktionieren. Sie müssen jeder Bedingung eine separate case-Anweisung zur Verfügung stellen SQLFIDDLE für dieselbe SQLFIDDLE SELECT EMP_NO, sum(CASE WHEN Emp_Shift = 'AL' THEN 1 ELSE 0 END) AS COUNT_AL, sum(CASE WHEN Emp_Shift = 'S' THEN 1 ELSE 0 END ) AS COUNT_S, sum(CASE WHEN Emp_Shift = 'H' THEN.

Linke Join-Tabelle, finden Sie sowohl den Null- als auch den Übereinstimmungswert

Versuchen Sie es mit FULL OUTER JOIN. Dies ist das Sqlfiddle. Es erzeugt die erwartete Operation SQLFiddle select t1.years, t1.numOfppl, t2.years, t2.numOfppl from t1 Full Outer Join t2 auf t1.years=t2.years .

Wiederholte SQL-Bedingung in zwei Tabellen

Sie können es wie folgt erreichen DECLARE @AccountId int @AccountID=20 DELETE FROM Table_A WHERE FunctionId IN (Select FunctionId FROM Table_B WHERE [email protected]) DELETE FROM Table_B WHERE [email protected] .

Matplotlib: Plotten Sie das Ergebnis einer SQL-Abfrage

Nehmen Sie dies als Startcode: import numpy as np import matplotlib.pyplot as plt from sqlalchemy import create_engine import _mssql fig = plt.figure() ax = fig.add_subplot(111) engine = create_engine('mssql+pymssql://* *:****@127.0.0.1:1433/AffectV_Test') connection = engine.connect() result = connection.execute('SELECT Campaign_id, SUM(Count) AS Total_Count FROM Impressions GROUP BY Campaign_id') ## die Daten Daten =.

Wie finde ich Datensätze in einer Tabelle, die in einer anderen vorhanden sind, aber auf einem Datum basieren?

select d.`name` from z_dealer d where (select count(*) from z_order o WHERE o.promo_code = d.promo_code AND o.date_ordered > '2015-01-01') = 0 .

Informationen aus der SQL-Datenbank abrufen und Anmeldefehler erhalten

ändere $username = "'rylshiel_order" in $username = "rylshiel_order" und du solltest fertig sein. Sie geben hier ein zusätzliches einzelnes Zitat weiter. .

Heroku RAM erhöht sich nicht mit aktualisierten Prüfständen

Dieser Log-Auszug stammt von einem einmaligen Prüfstand, einer Heroku-Laufkonsole - dies ist völlig unabhängig von Ihren Web-Prüfständen, für die Sie möglicherweise 2x Prüfstände ausführen. Sie müssen --size=2x in Ihrem heroku run-Befehl angeben, damit der einmalige Prozess 2x Dynos verwendet.


SOQL Best Practices mit mehreren Junction-Objekten

Ich brauche Hilfe bei SOQL. Ich habe einen SQL-Hintergrund und versuche zu verstehen, wie eine einfache Abfrage in SQL in SOQL geschrieben werden könnte.

Angenommen, ich habe ein Hauptobjekt, das Teil mehrerer Junction-Objekte ist, und es muss eine Abfrage geschrieben werden, um Datensätze aus dem Hauptobjekt auszuwählen, die bestimmte Kriterien in Bezug auf die anderen Eltern der Junction-Objekte erfüllen. Was wäre der beste Ansatz, um das Erreichen von Salesforce-Grenzen zu vermeiden und SOQL-Einschränkungen zu umgehen?

Zum Beispiel muss ich alle Datensätze aus dem Hauptobjekt abrufen, die mit Objekt 1 (über Junction 1) und Object1.Field1 = 'value1' verknüpft sind und auch mit Objekt 2 (über Junction 2) und Object2.Field1 = 'value2 . verknüpft sind ', und auch mit Objekt 3 (über Junction 3) und Object3.Field1='value3' verknüpft.

In SQL würde ich mit so etwas beginnen (siehe Abbildung unten für die Objektbeziehung):

In SOQL habe ich versucht, eine ähnliche Abfrage mit Unterabfragen für die Junction-Objektfilter zu schreiben, aber Salesforce hat mich daran gehindert, mehr als zwei Unterabfragen in einem einzigen Aufruf zu haben, obwohl sie alle mit dem übergeordneten Hauptobjekt zusammenhängen.

Bei einem meiner letzten Versuche, dies zum Laufen zu bringen, habe ich einen SOQL-Aufruf durchgeführt, um Datensätze aus dem Hauptobjekt abzurufen, und die Ergebnisse einer Karte (main) hinzugefügt. Dann habe ich die Junction-Objekte getrennt aufgerufen, um Main-IDs abzurufen, die den einzelnen Kriterien entsprechen, und die zurückgegebenen Datensätze außerdem einer Map (Junction-Map) hinzugefügt. Sobald ich die Haupt-IDs hatte, musste ich meine Kreuzungskarte durchlaufen und versuchen, die zurückgegebenen IDs in meiner Hauptkarte zu finden. Wenn die IDs in der Hauptkarte nicht gefunden wurden, würde ich den Datensatz aus der Hauptkarte entfernen (weil er die angeforderten Kriterien nicht erfüllt). Der gleiche Ansatz würde auf Kreuzung 2 und Kreuzung 3 angewendet. Die in der Hauptkarte verbleibenden Datensätze wären dann das Ergebnis von Datensätzen, die allen angeforderten Kriterien für alle Kreuzungsobjekte entsprechen.

Das Hauptproblem ist, dass ich nicht sicher bin, ob dies die beste Vorgehensweise beim Umgang mit mehreren Junction-Objekten ist, da ich es hier mit mehreren Aufrufen der Datenbank und viel Verarbeitung zu tun habe. In meinem Beispiel habe ich nur 3 Kreuzungen adressiert, aber in meiner Anwendung habe ich mehr als 3 Kreuzungen. Ich mache mir Sorgen, vielleicht verfolge ich hier nicht den richtigen Ansatz.

Hat jemand Erfahrung mit dem besten Ansatz beim Umgang mit mehreren Junction-Objekten oder könnte mich zumindest an die richtige Dokumentation weiterleiten, die mir helfen könnte?


3 Antworten 3

Ich würde dafür die let-Syntax verwenden (die erfordert, dass die calc-Bibliothek geladen wird). Dies hat den Vorteil, dass der Begrenzungsrahmen Ihres Bildes nicht beeinflusst wird.

Sie können die gewünschte Koordinate für die untere linke Ecke des B-Knotens wie folgt berechnen:

Und hier ist ein anderer Ansatz, der es den Knoten ermöglicht, unterschiedliche Breiten zu haben, wie von Andrew Stacey vorgeschlagen.
Die Idee ist, einen Rautenknoten zu verwenden, der den rechteckigen Knoten als Nutzlast enthält. Durch Einstellen des Formaspekts entsprechend der Neigung der Linie und Verankern seiner unteren Ecke an der gewünschten Position entlang der Linie ändert der Rechteckknoten seine Position entsprechend der Breite des Inhalts.

Ich habe eine Knotenmatrix für den äußeren Knoten verwendet, die es ermöglicht, den inneren Knoten von TikZ korrekt zu behandeln (Sie könnten auch einen normalen Knoten verwenden und den inneren Knoten mit ikz ode definieren. , aber diese Art der Verschachtelung führt zu Problemen ). Die Verwendung einer Knotenmatrix bedeutet, dass Sie Ihren Knoten mit beenden müssen.

Ich habe die Berechnungen und Stileinstellungen in eine Ecke des Linienstils gepackt, die seine Argumente an den inneren Knoten weitergibt.


Eine zu vielen Beziehungen erstellen¶

Beziehungen sind eine Technik, die häufig in Datenbanken verwendet wird. Das Konzept ist, dass Features (Zeilen) verschiedener Layer (Tabellen) zueinander gehören können.

Als Beispiel haben Sie einen Layer mit allen Regionen von Alaska (Polygon), der einige Attribute über seinen Namen und den Regionstyp und eine eindeutige ID (die als Primärschlüssel fungiert) bereitstellt.

Fremde Schlüssel¶

Dann erhalten Sie einen weiteren Punktlayer oder eine Tabelle mit Informationen zu Flughäfen, die sich in den Regionen befinden und die Sie auch im Auge behalten möchten. Wenn Sie sie dem Regionslayer hinzufügen möchten, müssen Sie eine Eins-zu-Viele-Beziehung mithilfe von Fremdschlüsseln erstellen, da es in den meisten Regionen mehrere Flughäfen gibt.

Abbildungsbeziehungen 1:

Alaska-Region mit Flughäfen

Zusätzlich zu den bereits vorhandenen Attributen in der Attributtabelle des Flughafens ein weiteres Feld fk_region, das als Fremdschlüssel fungiert (wenn Sie eine Datenbank haben, möchten Sie wahrscheinlich eine Einschränkung dafür definieren).

Dieses Feld fk_region enthält immer eine ID einer Region. Es kann wie ein Zeiger auf die Region gesehen werden, zu der es gehört. Und Sie können ein benutzerdefiniertes Bearbeitungsformular für die Bearbeitung erstellen und QGIS kümmert sich um die Einrichtung. Es funktioniert mit verschiedenen Anbietern (so können Sie es auch mit Shape- und CSV-Dateien verwenden) und Sie müssen QGIS nur die Beziehungen zwischen Ihren Tabellen mitteilen.

Lagen¶

QGIS macht keinen Unterschied zwischen einer Tabelle und einer Vektorebene. Grundsätzlich ist eine Vektorebene eine Tabelle mit einer Geometrie. So können Sie Ihre Tabelle als Vektorebene hinzufügen. Zur Demonstration können Sie das Shapefile ‘region’ (mit Geometrien) und die CSV-Tabelle ‘airport’ (ohne Geometrien) und einen Fremdschlüssel (fk_region) in die Layer-Region laden. Dies bedeutet, dass jeder Flughafen zu genau einer Region gehört, während jede Region beliebig viele Flughäfen haben kann (eine typische Eins-zu-Viele-Beziehung).

Definition (Beziehungsmanager)¶

Das erste, was wir tun werden, ist, QGIS über die Beziehungen zwischen den Layern zu informieren. Dies geschieht in Einstellungen ‣ Projekteigenschaften. Öffne das Beziehungen Menü und klicken Sie auf Hinzufügen.

  • Name wird als Titel verwendet. Es sollte eine für Menschen lesbare Zeichenfolge sein, die beschreibt, wofür die Beziehung verwendet wird. In diesem Fall rufen wir einfach “Airports” an.
  • Referenzschicht ist die mit dem Fremdschlüsselfeld darauf. In unserem Fall ist dies die Flughafenebene
  • Referenzfeld wird sagen, welches Feld auf die andere Ebene zeigt, also ist dies in diesem Fall fk_region
  • referenzierte Ebene ist diejenige mit dem Primärschlüssel, auf die gezeigt wird, also ist es hier die Regions-Ebene
  • referenziertes Feld ist der Primärschlüssel der referenzierten Ebene, also ID
  • Ich würde wird für interne Zwecke verwendet und muss eindeutig sein. Sie benötigen es möglicherweise, um benutzerdefinierte Formulare zu erstellen, sobald dies unterstützt wird. Wenn Sie es leer lassen, wird eine für Sie generiert, Sie können jedoch selbst eine zuweisen, um eine einfacher zu handhabende zu erhalten.

Abbildungsbeziehungen 2:

Formen¶

Da QGIS nun über die Beziehung Bescheid weiß, wird es verwendet, um die generierten Formulare zu verbessern. Da wir die Standardformularmethode (automatisch generiert) nicht geändert haben, wird unserem Formular nur ein neues Widget hinzugefügt. Wählen wir also den Ebenenbereich in der Legende aus und verwenden Sie das Identifizierungswerkzeug. Abhängig von Ihren Einstellungen wird das Formular möglicherweise direkt geöffnet oder Sie müssen es im Identifizierungsdialog unter Aktionen öffnen.

Abbildungsbeziehungen 3:

Identifikationsdialogregionen mit Bezug zu Flughäfen

Wie Sie sehen, werden die dieser Region zugeordneten Flughäfen alle in einer Tabelle angezeigt. Und es gibt auch einige Schaltflächen. Lassen Sie uns sie kurz überprüfen

  • Das Die Schaltfläche dient zum Umschalten des Bearbeitungsmodus. Beachten Sie, dass der Bearbeitungsmodus des Flughafen-Layers umgeschaltet wird, obwohl wir uns in der Feature-Form eines Features aus dem Regions-Layer befinden. Die Tabelle stellt jedoch Features des Flughafen-Layers dar.
  • Das Schaltfläche fügt dem Flughafen-Layer eine neue Funktion hinzu. Und der neue Flughafen wird standardmäßig der aktuellen Region zugewiesen.
  • Das Schaltfläche löscht den ausgewählten Flughafen endgültig.
  • Das Symbol öffnet einen neuen Dialog, in dem Sie einen vorhandenen Flughafen auswählen können, der dann der aktuellen Region zugewiesen wird. Dies kann praktisch sein, wenn Sie den Flughafen versehentlich in der falschen Region erstellt haben.
  • Das Symbol trennt den ausgewählten Flughafen von der aktuellen Region und lässt sie effektiv nicht zugewiesen (der Fremdschlüssel ist auf NULL gesetzt).
  • Die beiden Schaltflächen rechts schalten zwischen Tabellenansicht und Formularansicht um, wo Sie später alle Flughäfen in ihrem jeweiligen Formular anzeigen können.

Wenn Sie an der Flughafentabelle arbeiten, steht ein neuer Widget-Typ zur Verfügung, mit dem Sie das Merkmalsformular der referenzierten Region in das Merkmalsformular der Flughäfen einbetten können. Es kann verwendet werden, wenn Sie die Layer-Eigenschaften der Flughafentabelle öffnen, zum Felder Menü und ändern Sie den Widget-Typ des Fremdschlüsselfelds ‘fk_region’ in Beziehungsreferenz.

Wenn Sie sich jetzt den Feature-Dialog ansehen, sehen Sie, dass das Formular der Region in das Flughafen-Formular eingebettet ist und sogar eine Combobox enthält, mit der Sie den aktuellen Flughafen einer anderen Region zuordnen können.

Abbildungsbeziehungen 4:

Identifikationsdialog Flughafen mit Bezug zu Regionen


Schau das Video: Geography in PostGIS. IMPORTANT!!! PostGIS Baby Steps