스크립트를 통해 MAp 역할 설정여보세요,
초보자가 테이블 변수 및 맵 역할과 같은 데이터 테이블의 일부 매개 변수를 설정하는 데 도움이되는 스크립트를 만들고 있습니다.
지도 역할을 설정하면 파일 경로가 열 속성에 기록되지 않습니다.
path = pick file ();
dt0:my_column << set property ("Map Role", Map Role ("Shape Name Use" (path), "My_column") ) ) ;어떤 아이디어가 이것을 유발합니까?
다시 : 스크립트를 통해 MAp 역할 설정좋아, 잠시 동안이 문제를 해결 한 후 문제가 어디에 있는지 봅니다.
Windows의 파일 경로는 다음과 같습니다. C : \ user \ file.txt
pick 파일 ()을 사용하여 jmp에서 경로를 추출하면 "C : /user/file.txt"로 변환됩니다. JMP는 '\'를 특수 문자로 간주하기 때문입니다. 다른 JSL 명령어에서 이상한 점은 파일 경로에 JMP 구문을 사용할 수 있지만 어떤 이유로 Map Role은 일반적인 Windows 구문을 사용한다는 것입니다.
이제 내 질문은 : JMP 파일 경로를 Windows 파일 경로로 변환하는 간단한 방법이 있습니까? 다음과 같이 작성할 필요가없는 것 :
"C : \! \ user \! \ file.txt"
또는 열 속성에 직접 액세스하고 맵 역할 창에서 파일을 선택하라는 메시지를 열 수있는 스크립트도 유용합니다.
감사
다시 : 스크립트를 통해 MAp 역할 설정좋아, 이것에 대한 해결책을 찾은 것처럼 보인다.
dt= open (pick file (), invisible ) ;
path = dt<< get path;
dt<<CLOSE></CLOSE>
이것은 그것을 해결하는 것 같습니다
다시 : 스크립트를 통해 MAp 역할 설정또한 경로가있는 인수는 문자열이 아닌 명명 된 인수라고 생각하므로 다음과 같습니다.
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use( path ), "My_column" ) ) ) ;
BTW, JMP는 기본적으로 Windows 형식이 아닌 POSIX 경로 형식을 사용합니다. 그러나 일반적으로 자동으로 변환되거나 내장 함수를 명시 적으로 호출하여 두 형식간에 변환 할 수 있습니다.
다시 : 스크립트를 통해 MAp 역할 설정그 길은 약간 돌고 불필요합니다. 이것 좀 봐 함수 .
다시 : 스크립트를 통해 MAp 역할 설정감사 mark ,
나는 여기서 무언가를 배웠다. 나는 Posix가 무엇인지 몰랐다:)
스크립팅 인덱스에서 POSIX를 검색하면서 변환 함수를 찾았습니다.
path = pick file () ;
converted_path= Convert File Path (path, windows) ;
<< get path 메시지를 사용하는 것과 비교하면 테이블 열기가 절약됩니다.
다시 : 스크립트를 통해 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 역할 설정간단하다. 다음은 다른 주장의 예입니다.
리터럴 인수, 숫자 또는 문자열 :
x = Sqrt( 5 );
x = Num( "5" );
변수 인수 :
x = 5;
y = Sqrt( x );
명명 된 인수 :
dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
마지막 예제에는 명명 된 인수 (Y, X 및 Fit Line)와 리터럴 인수 (: weight 및 : height)가 포함됩니다. 원래 코드는 Shape Name Use ()라는 인수를 문자열 구분 기호로 묶어 문자열 인수로 만들었습니다.
Re : 스크립트를 통해 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로 경로를 변환하는 단계는 열 속성이 두 형식을 모두 허용하므로 결국 필요하지 않았습니다.