środa, 31 sierpnia 2011
wtorek, 9 sierpnia 2011
Jak dodać własny link do wyników wyszukiwania w Geoportalu Esri
Domyślnie Esri Geoportal Server wyświetla standadowe linki na liście wyszukiwania. Geoportal sam próbuje się domyślać jaki jest cel danego linku (czy po kliknięciu ma się wyświetlić mapa z podglądem, czy okno pobierania danych) ale nie zawsze mu to wychodzi. Standardowe linki można w prosty sposób wyłączyć. W tym celu w pliku geoportal\WEB-INF\classes\gpt\search\profiles\CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt należy dodać sekcję :
W naszym przypadku ścieżka dostępu do danych wygląda tak:
/gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL
Tak się składa, że takich wartości w jednym pliku metadanych może być więcej, np. inne dla wartości
<gmd:CI_OnLineFunctionCode>information</gmd:CI_OnLineFunctionCode>
<gmd:CI_OnLineFunctionCode>download</gmd:CI_OnLineFunctionCode>
itd.
Gdy zostaną ustalone elementy, które mają być zindeksowane trzeba dodać element <property> do pliku geoportal\WEB-INF\classes\gpt\metadata\iso\inspire\inspire-apiso-indexables.xml, oraz ustawić nazwę elementu i ścieżkę dostępu. W naszym przykładzie zostały dodane następujące linie:
Czyli zostało ustawione, że np. property o nazwie distribution.information.url wskazuje na odpowiedni zapis w pliku metadanych.
Żeby nowe wartości zostały prawidłowo zaindeksowane trzeba:
property-meanings.xml
Następnie trzeba dodać elementy <property-meaning> do pliku geoportal\WEB-INF\classes\gpt\metadata\property-meanings.xml. Trzeba poprzednio przypisane nazwy elementów przypisać do odpowiednich elementów <dc>, w naszym przykładzi został po prostu dodany przedrostek "dc:" :
CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt
Teraz wracamy do pliku CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt i dodajemy kolejne elementy <Link>. W naszym przykładzie dodamy:
<Link label="catalog.mdCode.onLineFunctionCode.offlineAccess">
<xsl:value-of select="dc:distribution.offline.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.download">
<xsl:value-of select="dc:distribution.download.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.order">
<xsl:value-of select="dc:distribution.order.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.search">
<xsl:value-of select="dc:distribution.search.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.information">
<xsl:value-of select="dc:distribution.information.url"/>
</Link >
dc:distribution.offline.url to poprzednio zdefiniowana wartość w pliku property-meanings.xml. Wartość catalog.mdCode.onLineFunctionCode.offlineAccess to wyświetlana etykieta linku zdefiniowana w pliku geoportal\WEB-INF\classes\gpt\resources\gpt.properties.
Wynik tych działań wyglądać może tak:
...
</Types>
<Links>
<Link gptLinkTag="addToMap" show="false"/>
<Link gptLinkTag="preview" show="false"/>
<Link gptLinkTag="open" show="false"/>
</Links>
</Record>
Trudniej sprawa wygląda gdy chcemy dodać własne linki. Sporo informacji na ten temat można zlaleźć na stronach wsparcia Esri. Zobacz w jaki sposób można to zrobić dla metadanych o profilu inspire.
indexables.xml
Najpierw w pliku geoportal\WEB-INF\classes\gpt\metadata\iso\inspire\inspire-apiso-indexables.xml należy dodać indeksowanie interesujących nas danych. W tym celu należy dodać elementy , które wskazują nazwę indeksowanych wartości oraz ich ścieżkę dostępu w pliku metadanych. Ścieżkę najlepiej wyszukać bezpośrednio w Geoportalu
Edytowanie wartości w pliku metadanych |
Otwieranie pliku metadanych |
Wyszukiwanie ścieżki dostępu do wartości |
W naszym przypadku ścieżka dostępu do danych wygląda tak:
/gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL
Tak się składa, że takich wartości w jednym pliku metadanych może być więcej, np. inne dla wartości
<gmd:CI_OnLineFunctionCode>information</gmd:CI_OnLineFunctionCode>
<gmd:CI_OnLineFunctionCode>download</gmd:CI_OnLineFunctionCode>
itd.
Gdy zostaną ustalone elementy, które mają być zindeksowane trzeba dodać element <property> do pliku geoportal\WEB-INF\classes\gpt\metadata\iso\inspire\inspire-apiso-indexables.xml, oraz ustawić nazwę elementu i ścieżkę dostępu. W naszym przykładzie zostały dodane następujące linie:
<property meaning="apiso:distribution" xpath="/gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource">
<property meaning="distribution.information.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='information']"/>
<property meaning="distribution.search.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='search']"/>
<property meaning="distribution.order.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='order']"/>
<property meaning="distribution.download.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='download']"/>
<property meaning="distribution.offline.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='offlineAccess']"/>
</property>
Czyli zostało ustawione, że np. property o nazwie distribution.information.url wskazuje na odpowiedni zapis w pliku metadanych.
Żeby nowe wartości zostały prawidłowo zaindeksowane trzeba:
- Zapisać plik inspire-apiso-indexables.xml
- Zatrzymać serwer
- Usunąć pliki z folderu lucene (czytaj więcej)
- Uruchomić serwer
- Zalogować się do Geoportalu
- Zaaprobować wszystkie pliki metadanych w panelu administracyjnym Geoportalu - to spowoduję ponowną indeksację wszystkich wartości
property-meanings.xml
Następnie trzeba dodać elementy <property-meaning> do pliku geoportal\WEB-INF\classes\gpt\metadata\property-meanings.xml. Trzeba poprzednio przypisane nazwy elementów przypisać do odpowiednich elementów <dc>, w naszym przykładzi został po prostu dodany przedrostek "dc:" :
<property-meaning name="distribution.information.url" valueType="String" comparisonType="value">Trzeba również dodać element <meaning-names> w sekcji <propertySets>:
<dc name="dc:distribution.information.url"/>
</property-meaning>
<property-meaning name="distribution.search.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.search.url"/>
</property-meaning>
<property-meaning name="distribution.order.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.order.url"/>
</property-meaning>
<property-meaning name="distribution.download.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.download.url"/>
</property-meaning>
<property-meaning name="distribution.offline.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.offline.url"/>
</property-meaning>
<propertySets>
...
<full>
<dc>
...
<meaning-names>resource.url,website.url,thumbnail.url,xml.url</meaning-names>
<meaning-names>distribution.order.url,distribution.download.url,distribution.information.url,distribution.offline.url,distribution.search.url</meaning-names>
</dc>
</full>
</propertySets>
CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt
Teraz wracamy do pliku CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt i dodajemy kolejne elementy <Link>. W naszym przykładzie dodamy:
<Link label="catalog.mdCode.onLineFunctionCode.offlineAccess">
<xsl:value-of select="dc:distribution.offline.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.download">
<xsl:value-of select="dc:distribution.download.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.order">
<xsl:value-of select="dc:distribution.order.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.search">
<xsl:value-of select="dc:distribution.search.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.information">
<xsl:value-of select="dc:distribution.information.url"/>
</Link >
dc:distribution.offline.url to poprzednio zdefiniowana wartość w pliku property-meanings.xml. Wartość catalog.mdCode.onLineFunctionCode.offlineAccess to wyświetlana etykieta linku zdefiniowana w pliku geoportal\WEB-INF\classes\gpt\resources\gpt.properties.
Wynik tych działań wyglądać może tak:
poniedziałek, 1 sierpnia 2011
Subskrybuj:
Posty (Atom)