Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
5.3. Lektion: Formulär
När du lägger till nya data via digitalisering får du upp en dialogruta där du kan fylla i attributen för den aktuella funktionen. Denna dialog är dock som standard inte särskilt snygg att titta på. Detta kan orsaka problem med användbarheten, särskilt om du har stora datamängder att skapa eller om du vill att andra ska hjälpa dig att digitalisera och de tycker att standardformulären är förvirrande.
Lyckligtvis låter QGIS dig skapa egna anpassade dialogrutor för ett lager. Den här lektionen visar hur du gör.
Målet för den här lektionen: Att skapa ett formulär för ett lager.
5.3.1. ★☆☆ Följ med: Använda QGIS’ funktion för formdesign
Välj skiktet
vägar
i panelen Layers`Gå till Edit Mode som tidigare
Öppna skiktet
roads
attributtabellHögerklicka på valfri cell i tabellen. En kort meny visas, som innehåller Öppna formulär.
Klicka på det för att se formuläret som QGIS genererar för detta lager
Det skulle naturligtvis vara trevligt att kunna göra detta medan man tittar på kartan, i stället för att behöva söka efter en viss gata i Attribute Table hela tiden.
Välj skiktet roads i panelen Layers
Använd verktyget
Identify Features och klicka på en gata på kartan.
Panelen Identify Results öppnas och visar en trädvy av fältvärdena och annan allmän information om den klickade funktionen.
Överst i panelen markerar du kryssrutan Auto open form for single feature results i menyn
Identify Settings.
Klicka nu igen på valfri gata i kartan. Längs den tidigare Identify Results-dialogrutan ser du det nu välbekanta formuläret:
Varje gång du klickar på en enskild funktion med verktyget Identify öppnas dess formulär så länge :guilabel:
Auto open form
är markerat.
5.3.2. ★☆☆ Prova själv: Använda formuläret för att redigera värden
Om du befinner dig i redigeringsläge kan du använda det här formuläret för att redigera en funktions attribut.
Aktivera redigeringsläget (om det inte redan är aktiverat).
Använd verktyget
Identify Features och klicka på huvudgatan som går genom Swellendam:
Ändra dess highway-värde till
secondary
Avsluta redigeringsläget och spara dina ändringar
Öppna Attribute Table och notera att värdet har uppdaterats i attributtabellen och därmed i källdata
5.3.3. ★★☆ Följ med: Ställa in formulärfältstyper
Det är trevligt att redigera saker med hjälp av ett formulär, men du måste fortfarande mata in allt för hand. Lyckligtvis har formulär olika typer av så kallade widgets som gör att du kan redigera data på olika sätt.
Öppna roads-skiktets Properties…
Byt till fliken Fields. Du kommer att se detta:
Byt till fliken Attributes Form. Du kommer att se detta:
Klicka på raden
oneway
och välj Checkbox som Widget Type i listan med alternativ:Klicka på OK
Gå till redigeringsläge (om lagret
vägar
inte redan är i redigeringsläge)Klicka på verktyget
Identify Features (Identifiera funktioner)
Klicka på samma huvudväg som du valde tidigare
Du kommer nu att se att attributet oneway har en kryssruta bredvid sig som anger True
(markerad) eller False
(avmarkerad).
5.3.4. ★★★★ Prova själv:
Ange en mer lämplig formulärwidget för fältet highway.
Svar
För TYPE finns det uppenbarligen ett begränsat antal typer som en väg kan vara, och om du tittar i attributtabellen för det här lagret ser du att de är fördefinierade.
Ställ in widgeten på Value Map och klicka på Load Data from Layer.
Välj roads i rullgardinsmenyn Label och highway för både alternativen Value och Description:
Klicka på OK tre gånger.
Om du använder verktyget Identify på en gata medan redigeringsläget är aktivt, bör dialogrutan du får se ut så här:
5.3.5. ★★★★ Prova själv: Skapa testdata
Du kan också utforma ditt eget formulär helt från grunden.
Skapa ett enkelt punktlager med namnet
test-data
med två attribut:namn (text)
ålder (heltal)
Fånga några punkter på ditt nya lager med hjälp av digitaliseringsverktygen så att du har lite data att leka med. Du bör få upp standardformuläret för attributfångst som genereras av QGIS varje gång du fångar en ny punkt.
Observera
Du kan behöva inaktivera Snapping om det fortfarande är aktiverat från tidigare uppgifter.
5.3.6. ★★★★ Följ med: Skapa ett nytt formulär
Nu vill vi skapa vårt eget anpassade formulär för datafångstfasen för attribut. För att göra detta måste du ha QT Designer installerat (behövs endast för den person som skapar formulären).
Start QT Designer.
Skapa en ny dialogruta i den dialogruta som visas:
Titta efter Widget Box till vänster på skärmen (standard). Den innehåller ett objekt som heter Line Edit.
Klicka och dra det här objektet till ditt formulär. Detta skapar en ny Line Edit i formuläret.
När du har valt det nya elementet för radredigering ser du dess egenskaper längs sidan av skärmen (till höger som standard):
Sätt dess namn till
namn
.På samma sätt skapar du en ny Spin Box och anger dess namn till
age
.Lägg till en Label med texten
Add a New Person
i fet stil (se objektets properties för att ta reda på hur du ställer in detta). Alternativt kanske du vill ange titeln på själva dialogrutan (i stället för att lägga till en etikett).Lägg till en Label för din Line Edit och din Spin Box.
Ordna elementen efter dina egna önskemål.
Klicka var som helst i dialogen.
Hitta knappen Lay Out in a Form Layout (i ett verktygsfält längs skärmens övre kant, som standard). Då läggs dialogrutan ut automatiskt.
Ställ in dialogrutans maximala storlek (i dess egenskaper) till
200
(bredd) x150
(höjd).Ditt formulär bör nu se ut ungefär så här:
Spara ditt nya formulär som
exercise_data/forms/add_people.ui
När det är klart att spara kan du stänga Qt Designer
5.3.7. ★★★★ Följ med: Associera formuläret med ditt lager
Gå tillbaka till QGIS
Dubbelklicka på lagret test-data i teckenförklaringen för att komma åt dess egenskaper.
Klicka på fliken Attributes Form i dialogrutan Layer Properties
I rullgardinsmenyn Attribute editor layout väljer du Provide ui-file.
Klicka på ellipsknappen och välj filen
add_people.ui
som du just skapade:Klicka på OK i dialogrutan Layer Properties
Gå till redigeringsläget och ta en ny punkt
När du gör det visas din anpassade dialogruta (istället för den generiska som QGIS vanligtvis skapar).
Om du klickar på en av dina punkter med hjälp av verktyget
Identify Features kan du nu ta fram formuläret genom att högerklicka i fönstret med identifieringsresultat och välja från snabbmenyn.
Om du är i redigeringsläge för det här lagret kommer snabbmenyn att visa
i stället, och du kan då justera attributen i det nya formuläret även efter den första registreringen.
5.3.8. Sammanfattningsvis
Med hjälp av formulär kan du göra livet enklare för dig själv när du redigerar eller skapar data. Genom att redigera widget-typer eller skapa ett helt nytt formulär från grunden kan du styra upplevelsen för den som digitaliserar nya data för det lagret, och därmed minimera missförstånd och onödiga fel.
5.3.9. Ytterligare läsning
Om du har gått igenom det avancerade avsnittet ovan och har kunskaper i Python kan du läsa det här blogginlägget <https://woostuff.wordpress.com/2011/09/05/qgis-tips-custom-feature-forms-with-python-logic/>`_ om att skapa anpassade formulär med Python-logik, som möjliggör avancerade funktioner som datavalidering, autokomplettering etc.
5.3.10. Vad händer härnäst?
Att öppna ett formulär för att identifiera en funktion är en av de standardåtgärder som QGIS kan utföra. Men du kan också beordra programmet att utföra anpassade åtgärder som du definierar. Detta är ämnet för nästa lektion.