帖子
|
你的代码完全按照你告诉它的去做。将长度替换为数字进行测试,你可以看到:对于i在范围(7-3):#等于i在4:或在每次迭代:0,1,2,3在4:打印(string[i:3]) # ->将是:string([0:3]) string([1:3]) string([2:3])…你没有移动结束的位置,所以它总是在位置3,或“C”。与你的循环:ABC - > (0:3) BC - > [1:3] C - >[2:3]还有其他解决方案丹了,但是显示代码的区别以及如何添加结束位置“幻灯片”片:双={}为start_index范围(len (string)): 7 # 1: end_index = start_index + 3 # <——移动终端指数如果len (string [start_index: end_index]) = = 3: # < -检查是否开始指数和结束的长度指数(+ 3)大于3。combo = string[start_index:end_index] print(combo) # <- print it #添加用于计数项pair [combo] = pairs[combo] = 1如果不是pair .get(combo) else pairs[combo] + 1 else: print(f' {sub_string} count: {strings [start_index:end_index]}') print(pair) print(f' {sub_string} count: {pairs[sub_string]}')给出结果:ABC BCD CDC DCD CDC字符串末尾:DC字符串末尾:C {'ABC': 1, 'BCD': 1, 'CDC': 2, 'DCD': 1} CDC count: 2
...查看更多
昨天
|
1
|
0
|
16
|
帖子
|
由于python的pickle, arcpy中的ArcGIS类(Featureclass, Layers, Fields, Maps等)不能很好地在python线程之间传输。我还没有遇到任何人创建了自己的pickle类来传输esri类。我认为,如果您能够弄清楚如何pickle正在传输的arcpy数据类,您将能够更接近解决方案。
...查看更多
一周前
|
0
|
0
|
14
|
帖子
|
将源值放入字典中,然后对其进行处理可能更快。这样,您只需使用一次搜索游标来获取值,并且可以使用key gets在一次操作中完成insert游标内的连接。
...查看更多
2周前
|
0
|
1
|
24
|
帖子
|
你可以通过点击…和>符号。我希望他们能提供更多设置Validation类的例子。这将在类中创建一个属性来保存特征类列表,将参数设置为默认列表,然后在更改时更新/设置它。定义__init__(self): # set self。用于其他函数self的参数。params = arcpy.GetParameterInfo() self。fcList = [r'path to fc\address', r'path to fc\address2', r'path to fc\creeks'] def initializeParameters(self): #自定义参数属性。当工具被打开时被调用。修改参数值和属性。 # This gets called each time a parameter is modified, before # standard validation. if not self.params[1].altered: self.params[1].value = '; '.join(self.fcList) else: self.fcList = self.params[1].value self.params[1].value = '; '.join(self.fcList) return
...查看更多
2周前
|
0
|
0
|
41
|
帖子
|
不知道你的完整脚本还在做什么,但是文件GDB不支持并发写,如果你在TOC中加载了层,它不会被覆盖,如果从Pro env (python窗口)外部运行也不会失败。它在Pro窗口中工作,因为它使用的是拥有该fgdb权限的锁/ env。
...查看更多
2周前
|
0
|
1
|
35
|
帖子
|
只是另一个版本使用丹的字典建议:valDict = {"In_1": 25, "In_2": 35, "In_3": 45,…}使用arcpy.da。UpdateCursor(table1, ["Field1", "Field12", "Field3", "Field4", "Field5", "Field6", "Field7", "Field8"], where)作为游标:对于游标中的行:# if row[0]是None: # continue if all([行[0]== "Approved",行[1]== "Approved",行[2]== "Approved",行[3]不是None,行[4]== "Pass"):行[7]= 15否则:行[7]= valDict.get(行[3])如果行[4]== "Pass"否则valDict.get(行[4])这将指出哪些In_i值不在字典中,通过为它们赋值0,或者减去10,如果行[4]不等于该行的'Pass'。
...查看更多
3周前
|
0
|
1
|
85
|
帖子
|
python中的多处理真的是一场噩梦,特别是它无法返回不可pickle的对象,这几乎是内置类和对象之外的所有东西(列表、字典等)。您可以(并且必须)创建或包装您自己的Featureclass Class,使其可pickle。我还没有深入到那一步,因为这看起来很荒谬。多处理有许多不同的设置方式,每一种都有自己的特点。老实说,我还没有尝试过内存空间。不过你可以尝试一下,返回内存中条目的路径,但它可能会被线程锁定或在脚本执行结束时被销毁。我认为最好的办法是为每个线程创建新的gdb,并返回它们的路径,以供以后在脚本中进一步引用。似乎适得其反,但这就是arcpy/ python的构建方式。我返回结果字典,其中包含已创建的特性的路径,或者我需要从中获取的任何其他信息,并遍历它们。在worker脚本中,返回一个字典:… result = {'Task': 'c_quality', 'count': 0, 'Error': None} result['count'] = arcpy.GetCount_management(cTble).getOutput(0) return result In the main script, execute the workers getting their results in a list to iterate over. with mp.Pool(processes=3) as pool: p1 = pool.apply_async(CreateSales.create_sales, (logging, )) p2 = pool.apply_async(CreateQuality.create_quality, (logging, )) p3 = pool.apply_async(CreateAccountsTable.create_accounts_table, (logging, )) res = [p1.get(), p2.get(), p3.get()] for r in res: if r['Error'] != None: logging.info( f'Task {r["Task"]} Failed -- Check Error Log {dt.timedelta(seconds=t.time() - tasksStartTime)}\n')
...查看更多
4星期前
|
0
|
0
|
66
|
帖子
|
如果您将代码格式化为python格式,请单击…,然后将>符号粘贴到窗口中。文件地理数据库不支持并发写操作,因此如果您的进程试图在每个进程中都对其进行写操作,则会失败。您需要将结果输出到其他地方,比如为每个结果输出一个新的gdb,然后从该位置进行合并。
...查看更多
4星期前
|
0
|
2
|
77
|
帖子
|
inValue来自哪里?如果是游标,则添加GPS_Y_N字段并将其传入:def isDuplicate(inValue, gps): if all([inValue in uniqueList, gps == 'N']):返回1否则:uniqueList.append(inValue) return 0如果不是,则使用搜索游标并获取值。
...查看更多
11-29-2022日上午
|
0
|
0
|
79
|
帖子
|
当您导出字段映射对象时,工具输出将其转换为字符串值。我不认为它会工作在其他pc的没有访问该路径,因为fieldmapping是专属的输入和输出。它是重复的,因为字段映射对象为每个映射使用来自输入和输出字段的完整路径,因为您可以有多个输入进入,并且它需要知道它来自哪个数据集。您必须在代码中创建一个fieldmap,这并不难自动化。使用这些字符串,您可以创建in/out字段的字典或元组列表,然后操作fieldmap对象来映射它们。例如:fldMap = arcpy. fieldmaps () fldMap. addtable (tmp_stops) #您可以使用arcpy.ListFields() keepfields = ['OID_', 'Sequence', 'USER_address', 'USER_address_apartment', 'USER_address_city', 'USER_address_common_name', 'USER_date_of_birth', 'USER_first_name', 'USER_last_name', 'USER_ori','USER_number', 'USER_status', 'USER_type'] #创建字段的旧/新字段元组,或手动执行:[('owner', 'owner'),…updateFlds = [(fld, fld.]替换('USER_', "))在keepfields中的fld,如果'USER_'在fld] #迭代来自源fc的字段,以删除那些没有在arcpy.ListFields(tmp_stops):如果f.name不在keepfields中,也不是f.required: #删除旧的小写fieldmap fldMap.removeFieldMap(fldMap.findFieldMapIndex(f.name)) #重新映射updateFlds中列出的fldPair字段:#获取fieldmap索引indx = fldMap. findfieldmapindex (fldPair[0]) mapToReplace = fldMap. getfieldmap (indx) #设置fldMap名称fldMap_name = mapToReplace。outputField #设置为新的名称fldMap_name.name = fldPair[1] fldMap_name.name = fldPair。aliasName = fldPair[1] #替换字段映射对象mapToReplace中的名称。outputField = fldMap_name fldMap。replaceFieldMap(indx, mapToReplace)然后使用fldmap进行追加。
...查看更多
11-29-2022星期日晚上我
|
0
|
0
|
65
|
标题 | 荣誉 | 发布 |
---|---|---|
1 | 昨天 | |
1 | 11-21-202205:51我 | |
3. | 11-21-202206:12我 | |
1 | 11-18-202207:53我 | |
1 | 11-16-202207:29我 |
在线状态 |
离线
|
最后到访日期 |
昨天
|