Vairāk

Automātiski izveidot jaunus slāņus no vienas datu kopas, izmantojot definiton vaicājumu unikālām vērtībām laukā

Automātiski izveidot jaunus slāņus no vienas datu kopas, izmantojot definiton vaicājumu unikālām vērtībām laukā


Es vēlētos automātiski parādīt funkciju klasi kā dažādus slāņus, pamatojoties uz konkrētu lauku. Esmu redzējis dažus rīkus tiešsaistē un vietnē XToolsPro kategorijā Sadalīt pēc atribūtiem, taču tie rada vairākas JAUNAS formas faili vai funkciju klases.

Es vēlētos, lai, pamatojoties uz definīcijas vaicājumiem, tiktu izveidoti vairāki “slāņi”, kas parāda dažādus skatus, taču es vēlētos, lai visi definīcijas vaicājumi tiktu izveidoti automātiski, pamatojoties uz izmaiņām noteiktā laukā.

Tā, piemēram, laukam "Valsts" tiktu izveidotas vairākas viena slāņa kopijas, bet definīcijas vaicājums katrā slānī norāda State = "TX", State = "AK" utt.


Es noteikti esmu radījis kaut ko līdzīgu šim; tas ir lieliski piemērots definīciju vaicājumiem. Šeit ir mana uzrakstītā rīka kopēšana/ielīmēšana/modificēšana. Jums būs jāizmeklē, kā rīkjoslā izveidot skripta rīku. Kad to darāt, izveidojiet divus parametrus: vienu, lai turētu ievades formas failu/līdzekļu klasi (tips = funkciju klase vai slānis), bet otru, lai ievadītu lauku “slānis pēc” (tips = virkne). Pēc tam izmantojiet šo kodu ar rīku saistītajā skriptā:

importēt arcpy ## get user input datasource = arcpy.GetParameterAsText (0) field = arcpy.GetParameterAsText (1) ## padarīt mxd un datu rāmja objektus mxd = arcpy.mapping.MapDocument ("CURRENT") df = arcpy.mapping. ListDataFrames (mxd) [0] ## veido unikālo vērtību sarakstu laukā unique_values ​​= set ([rinda [0] rindai arcpy.da.SearchCursor (datu avots, lauks)]) unique_values.sort () ## iterējiet, izmantojot vērtības un izveidojiet slāņus katram laukam name = arcpy.AddFieldDelimiters (datu avots, lauks) vērtībai unikālas vērtības: query = "{0} = '{1}". format (fieldname, value) layer = arcpy.mapping.Layer (datu avots) layer.name = vērtība layer.definitionQuery = vaicājums arcpy.mapping.AddLayer (df, layer, "BOTTOM")

Tas ir ļoti kails, un jūs varētu pievienot ķekars zvanu un svilpes. Pirmā lieta, ko es darītu, ir doties uz paša skripta rīka rīku ToolValidator un pievienot šīs rindiņas funkcijai updateParameters:

def updateParameters (self): if self.params [0] .value: fieldnames = [f.name for in arcpy.ListFields (self.params [0] .value)] self.params [1] .filter.list = lauku nosaukumi

Tagad rīku dialoglodziņā būs nolaižamā izvēlne ar lauku nosaukumiem, tāpēc jums nebūs rūpīgi jāievada lauka nosaukums (jo skripts nedarbosies ar nepareiziem burtiem!)

Kas attiecas uz lietošanas gadījumiem: tas ir rīka skelets, ko izmantoju, lai izveidotu daudzslāņu kml failus ... automatizētu šādu slāņu kopu izveidi, katram slānim piemērotu standartizētu simbolu un kartē izmantotu rīku no kartes līdz KML dokumentu, lai izveidotu izvadi. Lieliski noder datu kopīgošanai ar lietotājiem, kas nav ĢIS.


Skatīties video: Kā labot un ievietot rakstus vai attēlus Joomla vidē