This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Hi Patrick, re: > I am having a problem using the MCIDAS imgcopy command. I suspect it's an > issue > of 'user error'. > > *** What I am trying to do is copy data from a remote server to a local > directory using command line only. OK. This should be easy enough... > *** What I've done: > > I've mapped the remote and local data sets: > > dataloc.k ADD MSG 140.90.195.93 Looks good. > dsserve.k ADD LOCAL/MSG AREA DIR='/data/scratch/msgglob09i*' TYPE=IMAGE > “M8 > Latest MSG-1 band 9 10.8 um REALTIME I believe that this is your problem. The server that will write output files in AREA format (the ones you want to copy to) needs to know how to name files using AREA naming conventions. Your ADDE dataset specification does not contain the needed information to do this. The DIRFILE= keyword specification for an output dataset namespace does not contain enough information to uniquely name files. For instance, a DIRFILE= that looks like: DIR='/data/scratch/msgglob09i/AREA3*' might, at first glance, seem to uniquely specify an output name space of /data/scratch/mgsglob09i/AREA3000, /data/scratch/mgsglob09i/AREA3001, ... /data/scratch/mgsglob09i/AREA3999, but it does not. In fact the set of names specified in this example is _anything_ beginning with AREA3. What you need to do is tell DSSERVE that you want to create a specific output namespace. Here is one example: dsserve.k ADD LOCAL/MSG AREA 3000 3999 \"M8 Latest MSG-1 band 9 10.8 um REALTIME The unfortunate part about defining a dataset like this is that McIDAS does not one to use the DIRFILE= keyword in conjunction with the range of output AREA file numbers, 3000-3999 in this case. Instead, you have to tell McIDAS where the files exist in one of two ways: MCPATH REDIRECT > I've created the directory /data/scratch/msgglob09i and can write to the > directory as the user running mcidas. Since you want to write output files to the /data/scratch/msgglob09i directory, you would specify this directory as the first directory in your MCPATH. For example (that assumes that the HOME directory for 'rtoper' is /home/rtoper): setenv MCDATA /data/scratch/msgglob09i setenv MCPATH ${MCDATA}:/home/rtoper/mcidas/data:/usr/local/mcidas/data:/usr/local/mcidas/help In lieu of a file REDIRECTion, McIDAS will write output to the first writable directory in the MCPATH set of directories that is in scope when a command is run. So, with this environment setup, you could run: imgcopy.k MSG/MSGGLOB03I.1 LOCAL/MSG.1 and the resultant output will be the file /data/scratch/msgglob09i/AREA3000 The other way to 'teach' McIDAS about where it should look for files is by use of the REDIRECT facility: REDIRECT sets up a match between a file name regular expression and a specific directory that that/those file(s) will be found/written in. For instance, if your MCPATH was defined as: setenv MCPATH /home/rtoper/mcidas/data:/usr/local/mcidas/data:/usr/local/mcidas/help and you wanted to read/write AREA3000-AREA3999 files in /data/scratch/msgglob09i, you would define the needed file REDIRECTion as follows: redirect.k ADD AREA3\* \"/data/scratch/msgglob09i File REDIRECT definitions get saved in the file LWPATH.NAM which should be located in your McIDAS working directory (which is recommended to be ~user/mcidas/data (e.g., /home/rtoper/mcidas/data) for users other than 'mcidas' and /home/mcidas/workdata for the user 'mcidas'. > I can see the remote MSG data sets fine; > > Image file directory listing for:MSG/MSGGLOB03I > Pos Satellite/ Date Time Center Res (km) Image_Size > sensor Lat Lon Lat Lon > --- ------------- ------------ -------- ---- ---- ----- ----- ------------ > 1 METEOSAT8 26 FEB 07057 22:00:00 0 0 > Band: 3 1.6 um Near IR - Surface, cloud phase 3.02 3.00 3712 x 3712 Very good. (For the records, access to the MSG dataset on 140.90.195.93 requires one to LOGON specifying a user name and project ID that has been assigned by those maintaining McIDAS on 140.90.195.93). > *** When I attempt to copy from MSG/MSGGLOB03I to LOCAL/MSG I get an error: > > imgcopy.k LOCAL/MSGTMP.1 LOCAL/MSG.1 > Beginning Image Data transfer, bytes= 616660 > Transferring AREA data outbound, bytes= 616740 > imgcopy.k: MCAOUT rc= -1 > imgcopy.k: done A couple of things here: - you are not trying to copy from the remote ADDE dataset that you referred to previously - the LOCAL/MSG dataset is not defined in a way that McIDAS will know how to name the output file > *** I am sure I am missing something but not sure what. I'd appreciate any > help! You have run into one of the areas of McIDAS that requires more intimate knowledge of how things work. Please let me know if my explanation about the output namespace above was clear. > *** Here is a data dump of everything I've set for this scenario: > > setenv MCHOME /usr/local/mcidas > setenv MCDATA $MCHOME/mcidas2006/data > setenv MCSRC $MCHOME/mcidas2006/src > setenv MCPATH $HOME/:$MCHOME/:$MCDATA/:$MCSRC > setenv MCGUI $MCHOME/bin > unsetenv MCTABLE_READ > unsetenv MCTABLE_WRITE > setenv PATH $PATH/:$MCPATH/:$MCGUI > > running this as user 'rtoper' I have several recommendations for how to define the various environmental variables: - you don't need MCSRC - I strongly recommend you define MCDATA to be /home/rtoper/mcidas/data - I recommend that your MCPATH be defined as: setenv MCPATH ${MCDATA}:$MCHOME/data:$MCHOME/help - I recommend that you define MCTABLE_READ and MCTABLE_WRITE: setenv MCTABLE_WRITE $MCDATA/MCTABLE.TXT setenv MCTABLE_READ $MCTABLE_READ;$MCHOME/data/ADDESITE.TXT - since there should be no McIDAS executables in your $MCPATH directories, I see no reason to include MCPATH in your PATH definition > file perms for /data/scratch/msgglob09i: > drwxr-xr-x 2 rtoper fd 4096 Feb 27 17:58 msgglob09i > > dataloc.k ADD GER 140.90.195.64 > dataloc.k ADD GWR 140.90.195.66 > dataloc.k ADD MSG 140.90.195.93 > dataloc.k ADD PUB gp16.ssd.nesdis.noaa.gov > > dsserve.k ADD LOCAL/MSG AREA DIR='/data/scratch/msgglob09i*' TYPE=IMAGE > “M8 > Latest MSG-1 band 9 10.8 um REALTIME As noted above, the definition for LOCAL/MSG is incorrect for an output dataset. Please let me know if the information above was helpful. Cheers, Tom **************************************************************************** Unidata User Support UCAR Unidata Program (303) 497-8642 P.O. Box 3000 address@hidden Boulder, CO 80307 ---------------------------------------------------------------------------- Unidata HomePage http://www.unidata.ucar.edu **************************************************************************** Ticket Details =================== Ticket ID: PKJ-573885 Department: Support McIDAS Priority: Normal Status: Closed