透過腳本設定MAP角色你好,
我正在製作一個腳本來幫助初學者在資料表中設定一些參數,例如表變數和地圖角色。
問題是當我設定地圖角色時,檔案路徑未記錄在列屬性中
path = pick file ();
dt0:my_column << set property ("Map Role", Map Role ("Shape Name Use" (path), "My_column") ) ) ;有什麼想法導致這個嗎?
回覆:透過腳本設定 MAP 角色好吧,我的腳本終於可以工作了:)
出於某種原因,當我寫道:
dt0:my_column << set property ("Map Role", Map Role (Shape Name Use (path, "my_column" ) ) ;它不會將變數路徑中包含的字串傳輸到列屬性中。 當我嘗試使用 Eval(path) 和其他解決方法時它仍然無法運作。 我猜測 JSL 不支援評估此訊息內的變數。
所以這是我找到的解決方法:
My_expression = Eval Expr ( dt0:my_column << set property ("Map Role", Map Role (Shape Name Use (Expr(path), "my_column" ) ) );
Eval (My_expression); 這終於成功了!
最終不需要將路徑從 posix 轉換為 Windows 的步驟,因為列屬性接受這兩種格式。
回覆:透過腳本設定 MAP 角色很簡單。 以下是不同論點的範例。
文字參數、數字或字串:
x = Sqrt( 5 );
x = Num( "5" );
變數參數:
x = 5;
y = Sqrt( x );
命名參數:
dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
最後一個範例包括命名參數(Y、X 和擬合線)和文字參數(:weight 和:height)。 您的原始程式碼將 Shape Name Use() 命名參數包含在字串分隔符號中,這使其成為字串參數。
回覆:透過腳本設定 MAP 角色那麼我是否設法從文字字串設定此屬性?
你說這是「一個命名參數,而不是一個字串」。 這是什麼意思 ? 我想這是 JSL 的一個缺點,該系統是如此簡單和靈活,用戶不知道他們正在操縱的內容的確切性質
我嘗試了以下語法但無濟於事:
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Eval( path) ), "My_column" ) );
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Expr( path) ), "My_column" ) );
Eval Expr (dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Expr( path) ), "My_column" ) ) );
回覆:透過腳本設定 MAP 角色謝謝@馬克貝利,
我在這裡學到了一些東西。 我不知道 Posix 是什麼:)
在腳本索引中搜尋 POSIX,我找到了轉換函數:
path = pick file () ;
converted_path= Convert File Path (path, windows) ;
與使用 <
回覆:透過腳本設定 MAP 角色這條路線有點繞,而且沒有必要。 看到這個功能。
回覆:透過腳本設定 MAP 角色另外,我認為帶有路徑的參數是命名參數,而不是字串,所以它看起來像這樣:
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use( path ), "My_column" ) ) ) ;
順便說一句,JMP 預設使用 POSIX 路徑格式,而不是 Windows 格式。 但通常它會自動轉換,或者您可以明確地呼叫內建函數在兩種格式之間進行轉換。
回覆:透過腳本設定 MAP 角色好吧,看來我找到了解決方案:
dt= open (pick file (), invisible ) ;
path = dt<< get path;
dt<<CLOSE></CLOSE>
這似乎可以解決它:)
回覆:透過腳本設定 MAP 角色好吧,擺弄了一段時間後,我明白了問題所在:
Windows 中的檔案路徑如下所示 C:\user\file.txt
當您使用 pick file() 提取 jmp 中的路徑時,它會將其轉換為「C:/user/file.txt」。 我猜這是因為 JMP 認為 '\' 是一個特殊字元。 奇怪的是,在其他 JSL 指令中,您只能對檔案路徑使用 JMP 語法,但由於某種原因,Map Role 使用正常的 Windows 語法。
現在我的問題是:是否有一種簡單的方法將 JMP 檔案路徑轉換為 Windows 檔案路徑? 可以避免這樣寫的事情:
“C:\!\用戶\!\檔.txt”
或者,可以直接存取列屬性並開啟提示以在地圖角色窗格中選擇檔案的腳本也很有用。
謝謝