Archiv

Archiv für die Kategorie ‘Allgemein’

MapCache.GetRasterDataAsync vertauscht Skalierungsfaktoren [9.2]

18. Januar 2010 Keine Kommentare

Seit Tagen bin ich schon auf der Suche nach dem Fehler, endlich hab ich ihn gefunden.
Im Esri ArcGIS mobile ADF 9.2 gibt es die Methode GetRasterDataAsync(Envelope,Double,Double,Boolean,Object,CacheLayer[]) in der Klasse MapCache.

Laut Beschreibung möchte diese zwei Skalierungsparameter haben, zuerst den MinScale und dann den MaxScale. Genauer wird hier (leider) nicht darauf eingegangen, was diese machen und was gültige Parameter sind.

Fakt ist zunächst Mal – das muß man aber auch erstmal wissen – daß hier beispielsweise ein Wert von 5000.0 einem Faktor von 1:5000 entspricht.

Soweit noch nicht ungewöhnlich. Doch nun wirds interessant.
Ich begann also mit einem Download wie folgt:

//Download Raster
 Request[] lRasterRequests =
 lMapCache.GetRasterDataAsync(lMapCache.GetFullExtent().GetEnvelope(), 10000, 100000, false, null);

Download startet, ich bekomm eine Datei mit mehreren 100 MB. Diese kann ich laden und einbinden, ich sehe eine Rasterkarte.
Leider aber nur unterhalb des Skalierungsfaktors! Zoom ich weiter raus als auf 1:10000 (plus ein paar Zerquetschte), dann verschwindet die Rasterkarte und ich hab nur noch einen weißen Hintergrund.

Also hab ich in verzweifelter Suche einfach mal die beiden Paramter MinScale und MaxScale vertauscht:

//Download Raster
 Request[] lRasterRequests =
 lMapCache.GetRasterDataAsync(lMapCache.GetFullExtent().GetEnvelope(), 100000, 10000, false, null);
 

Und Überraschung: Die MapCache Datei wird gleich mal 1/3 größer und enthält nun die verschiedenen Pyramidenstufen.

Fazit:
Hätte man bei ESRI Inc. ein paar Beispiele angegeben, wie man sich die Implementierung vorstellt, so hätte man sich hier sehr viel Zeit sparen können!

KategorienAllgemein Tags:

Dateien mehrfach installieren

18. Januar 2010 Keine Kommentare

Möchte man die gleiche Datei mehrfach installieren, sprich in verschiedene Verzeichnisse, so stößt man schnell auf Fehlermeldungen verschiedenster Art.
Eine mögliche Umsetzung ist folgende:

    <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
        <Product>

            <Directory Id='TARGETDIR' Name='SourceDir'>
                <Directory Id='ProgramFilesFolder'>
                    <Directory Id='COMPANYFOLDER' Name='$(var.CompanyName)' />
                </Directory>
            </Directory>

            <ComponentGroup Id="Saar_A0_Quer.mxt">
                <Component Id="Saar_A0_Quer.mxt" Directory="APPLICATIONFOLDERTEMPLATEARCGIS" Guid="77B26FE2-607B-41D6-939E-2600F350F031">
                    <File Id="Saar_A0_Quer.mxt" KeyPath="yes" Source="$(var.Path_DataTemplates)\Saar_A0_Quer.mxt" />
                </Component>
                <Component Id="ArcGisCopy_Saar_A0_Quer.mxt" Directory="ARCGISROOTTEMPLATESPROJECT1" Guid="77B26FE2-607B-41D6-939E-2600F350F032">
                    <File Id="ArcGisCopy_Saar_A0_Quer.mxt" KeyPath="yes" Source="$(var.Path_DataTemplates)\Saar_A0_Quer.mxt" />
                </Component>
            </ComponentGroup>

            <Feature Id='FeatureDesktop' Title='Desktopinstallation' Level='30' Display='expand' >
                    <ComponentGroupRef Id='Saar_A0_Quer.mxt' />
            </Feature>

        </Product>
    </Wix>

warning HEAT5151: Could not load file or assembly

18. Januar 2010 Keine Kommentare

Fehler:
heat.exe : warning HEAT5151 : Could not harvest data from a file that was expected to be an assembly: C:\Projekte\…\Core.dll. If this file is not an assembly you can ignore this warning. Otherwise, this error detail may be helpful to diagnose the failure: Could not load file or assembly ‚Commons.UI, Version=9.3.0.978, Culture=neutral, PublicKeyToken=ccd18cc03af5b919‘ or one of its dependencies. The system cannot find the file specified.

Ursache:

Die Datei referenziert eine Fremd-DLL, die nicht im gleichen Verzeichnis und nicht im GAC (Global Assembly Cache) zu finden ist.

Lösung:

Alle Referenzen müssen entweder im GAC oder im gleichen Verzeichnis wie die zu extrahierende Datei liegen.

Definition von ApplicationFolderName bei WixUI_Advanced

18. Januar 2010 Keine Kommentare

Benutzt man das UI Set WixUI_Advanced, so muss man ein Property namens ApplicationFolderName definieren, welches dann im Dialog zur Verzeichnisauswahl angezeigt wird.

Die Definition eines einfachen Pfades macht man wie gewohnt:

<Property Id='ApplicationFolderName' Value='MeinProgramm' />

Schwieriger wirds, wenn man den Wert eines anderen Properties verwenden will.
So …

    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='ProgramFilesFolder'>
         <Directory Id='APPFOLDER' Name='$(var.ProgrammName)'>
         </Directory>
      </Directory>
    </Directory>
    <Property Id='ApplicationFolderName' Value='[APPFOLDER]' />

… funktionierts leider nicht. Properties können nur über eine CustomAction zugewiesen werden. Bei mir war der Wert aber immer leer. Wer das hinbekommt darf mir gern einen Tipp geben!

Ich habs so gelöst:

    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='ProgramFilesFolder'>
         <Directory Id='APPFOLDER' Name='$(var.ProgrammName)'>
         </Directory>
      </Directory>
    </Directory>
    <Property Id='ApplicationFolderName' Value='$(var.ProgrammName)' />

Nicht ganz so sauber, tut aber genauso.

Was aber, wenn man mehrere Pfade angeben möchte?
Dann sieht es so aus:

 <Property Id='ApplicationFolderName' Value='$(var.CompanyName)\$(var.InstallDirectoryName)\$(var.ProductVersion)' />