ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
	
			
		
		
			
				
																			
								Andrey Zhukov 							 
						Гуру 			
		Сообщения:  838 		Зарегистрирован:  10 дек 2009, 23:24 		
		
			Репутация:  169  
									Ваше звание:  старик-гисовик 
																	Откуда:  Москва 
							
							
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Andrey Zhukov   »  26 авг 2013, 16:18 
			
			
			
			
			
			Значит, попробуйте второй вариант.
UPD! 
Нет, это я все в размышлениях о курсорах насоветовал. Категорически без codeblock ничего не выйдет. В общем, либо питон и курсоры, либо инструмент и кодблок.
Как-то так:
Код: Выделить всё 
def calcPreview(myVar,dataFile):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "") 
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								doujin 							 
						Активный участник 			
		Сообщения:  163 		Зарегистрирован:  28 июн 2012, 01:02 		
		
			Репутация:  84  
									Откуда:  Vladivostok 
							
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 doujin   »  27 авг 2013, 12:30 
			
			
			
			
			
			Можно и без курсоров, главное в инструмент калькулятора поля передавать полностью корректное выражение. Тут главное не запутаться в кавычках и бэкслешах.
Код: Выделить всё 
import arcpy 
 
 
input_based_on_raster = "C:\\1\\2\\fr_kv1_05002_05000_01_3np2_08_t_pss1_034412_180613_raster_reclass.shp" 
 
myvar = "\"C:\\\\somefolder\\\\\"" 
 
arcpy.CalculateField_management(input_based_on_raster, "preview", "{0} + {1}".format(myvar, "!cDataFileN!.replace(\".img\",\"_preview.jpg\").replace(\"\\\"\", \"\")"), "PYTHON_9.3", "") 
			
			
													
					Последний раз редактировалось 
doujin  28 авг 2013, 13:12, всего редактировалось 2 раза.
									
 
			
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Andrey Zhukov 							 
						Гуру 			
		Сообщения:  838 		Зарегистрирован:  10 дек 2009, 23:24 		
		
			Репутация:  169  
									Ваше звание:  старик-гисовик 
																	Откуда:  Москва 
							
							
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Andrey Zhukov   »  27 авг 2013, 12:43 
			
			
			
			
			
			doujin  , вот это реальная жесть 
 Я пока читал - уже запутался.
 
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Syllion 							 
						Активный участник 			
		Сообщения:  167 		Зарегистрирован:  23 сен 2009, 16:09 		
		
			Репутация:  0  
				
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Syllion   »  28 авг 2013, 09:51 
			
			
			
			
			
			fall_out_bug писал(а): Значит, попробуйте второй вариант.
UPD! 
Нет, это я все в размышлениях о курсорах насоветовал. Категорически без codeblock ничего не выйдет. В общем, либо питон и курсоры, либо инструмент и кодблок.
Как-то так:
Код: Выделить всё 
def calcPreview(myVar,dataFile):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
А не подскажите, как этот пример использовать?
В PreLogic script я пишу:
Код: Выделить всё 
myVar = "C:\\somefolder"
def calcPreview(myVar,!cDataFileN!):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
В поле ниже:
 
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Syllion 							 
						Активный участник 			
		Сообщения:  167 		Зарегистрирован:  23 сен 2009, 16:09 		
		
			Репутация:  0  
				
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Syllion   »  28 авг 2013, 10:02 
			
			
			
			
			
			doujin , ваш вариант выдает ошибку:
			
		
				
			 
						Безымянный1.png (19.41 КБ) 6850 просмотров 
		 
		
		
			  
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Andrey Zhukov 							 
						Гуру 			
		Сообщения:  838 		Зарегистрирован:  10 дек 2009, 23:24 		
		
			Репутация:  169  
									Ваше звание:  старик-гисовик 
																	Откуда:  Москва 
							
							
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Andrey Zhukov   »  28 авг 2013, 10:08 
			
			
			
			
			
			Код: Выделить всё 
myVar = "C:\\somefolder"
def calcPreview(myVar,!cDataFileN!):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
Ну так неправильно же!
Вы объявляете переменную !cDataFileN! (что вообще некорректно!), а вызываете dataFile. Плюс объявляете переменную myVar и назначаете ее.
Надо так:
Код: Выделить всё 
def calcPreview(myVar, dataFile):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "") 
Код: Выделить всё 
calcPreview("C:\\somefolder\\",!cDataFileN!) 
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Syllion 							 
						Активный участник 			
		Сообщения:  167 		Зарегистрирован:  23 сен 2009, 16:09 		
		
			Репутация:  0  
				
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Syllion   »  28 авг 2013, 10:34 
			
			
			
			
			
			О спасибо огромное заработало!
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								doujin 							 
						Активный участник 			
		Сообщения:  163 		Зарегистрирован:  28 июн 2012, 01:02 		
		
			Репутация:  84  
									Откуда:  Vladivostok 
							
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 doujin   »  28 авг 2013, 13:17 
			
			
			
			
			
			Syllion писал(а): doujin , ваш вариант выдает ошибку
Писал о том, что бы не запутались в бекслешах, и сам запутался. Исправил код  в своем предыдущем сообщении. Там в строке 
myvar  не хватало несколько этих бекслешей.
 
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Syllion 							 
						Активный участник 			
		Сообщения:  167 		Зарегистрирован:  23 сен 2009, 16:09 		
		
			Репутация:  0  
				
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Syllion   »  28 авг 2013, 15:36 
			
			
			
			
			
			всем спасибо большое
			
			
									
						
										
						 
		 
				
		
		 
	 
	
	
	
		
		Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей