<\/HEAD>
Soms kan het nodig zijn om bijlagen zoals een multimedia-afbeelding te hebben in het pop-upvenster van onze webkaart of webapp, maar dit is niet mogelijk omdat bijlagen niet worden weergegeven in een veld alsof het een hyperlink is. Het is mogelijk om het adres handmatig in een veld te typen, want via de rest kunnen we weten hoe dit eruitziet, wat in principe zo is: https\/\/adres van de server\/rest\/services\/Hosted\/naam van de service\/laag- of tabelnummer binnen de service\/objectid\/attachments\/objectid van de bijlage.<\/P>
<\/P>
Maar dit is ideaal als onze service uit weinig records bestaat, dan zou het een eenvoudige taak zijn, en de realiteit is dat we meestal honderden of duizenden gegevens beheren, daarom presenteer ik hieronder iets wat ik vond op deze link: URL link to Attachment Photo when the FeatureLayer is not Shared with Everyone<\/A> dankzij John Evans<\/A>0c . <\/P><\/P>
Voordat we verder gaan, moet u weten dat in de laag of tabel waar de bijlagen zich bevinden een tekstveld moet bestaan om de URL van de bijlage op te slaan, in dit geval heb ik een veld genaamd imageurl gemaakt in de tabellen waar ik de bijlagen heb. Dit wordt in het script aangegeven als 'imageurl', dus als u een ander veld heeft om de url op te slaan, verandert u dat gewoon in het python-script.<\/P>
<\/P>
Allereerst moet u begrijpen hoe services werken in ArcGIS Online en Portal. Ze zijn vergelijkbaar maar er zijn een paar verschillen, te beginnen met het feit dat in Portal alle velden van Hosted Services in kleine letters zijn, wat niet gebeurt in ArcGIS Online.<\/P>
<\/P>
Laten we beginnen met de rest, ik heb al genoemd hoe het gaat maar hier een voorbeeld. Wat we gaan doen is de details van de service die ik heb gemarkeerd tonen.<\/P>
<\/P>
<\/P>
<\/P>
Bij het openen van de details is het belangrijk dat u het id van die service bekijkt, dit is een unieke identifier en voor het script is dit van vitaal belang.<\/P>
<\/P>
<\/P>
<\/P>
Een ander basisconcept dat u moet weten is de url van de rest, als u goed kijkt, kunt u verderop op de pagina zien dat we twee secties hebben, één voor lagen en één voor tabellen, in elk daarvan hebben we acties die bepaalde taken kunnen activeren of uitvoeren, maar degene die ons interesseert is degene die zegt URL van service, u kunt toegang krijgen tot welke dan ook maar u moet rekening houden met het feit dat de URL van elke laag of tabel verschillend is, aan de andere kant is degene die ons interesseert voor ons doel de laag of tabel die bijlagen heeft, in mijn geval is dat de tabel (hoe weet ik dat? Het volstaat om te zien dat bij lagen "Bijlagen inschakelen" staat, dus heeft deze geen bijlagen en bij tabellen staat "Bijlagen uitschakelen", met andere woorden dit is degene die heeft wat we nodig hebben).<\/P>
<\/P>
In dit geval ga ik alleen naar die van lagen zodat u iets belangrijks kunt zien, dus door te klikken op URL van service komen we hier.<\/P>
<\/P>
<\/P>
<\/P>
In deze afbeelding heb ik twee dingen gemarkeerd, ten eerste waar we terug kunnen gaan naar de service die alle lagen en tabellen bevat, en ten tweede het ID van de laag. Nu klik ik op de service om de inhoud ervan te bekijken en zo het ID van alle lagen en tabellen die deel uitmaken van de service te zien.<\/P>
<\/P>
<\/P>
<\/P>
In deze sectie kunnen we onderaan de lagen en tabellen zien:<\/P>
<\/P>
<\/P>
In mijn geval heb ik 1 laag en 2 tabellen, hun respectievelijke Id's zouden zijn:<\/P>
<\/P>
- 0 voor de laag
- 1 voor de eerste tabel (deze heeft bijlagen)
- 2 voor de tweede tabel (heeft ook bijlagen)<\LI>
< P style = " text-align : justify ; " > < / P > < P style = " text-align : justify ; " > Als we toegang krijgen tot een van de tabellen met bijlagen zult u dit aan het einde van de pagina kunnen zien:< / P > < P > < / P > < P > < IMG __jive_id = " 461075 " class = " image-6 jive-image " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 461075_pastedImage_7.png " / > < / P > < P style = " text-align : justify ; " > U zult merken dat er een link is die dient om te raadplegen (Query), nu zal ik op die link klikken en kunnen we informatie opvragen.< / P > < P > < / P > < P > < IMG __jive_id = " 461076 " class = " image-7 jive-image " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 461076_pastedImage_8.png " / > < / P > < P > < / P > < P style = " text-align : justify ; " > In principe heb ik alleen where: 1=1 gevraagd wat altijd waar is en Return IDs Only om alleen objectids van de tabel te zien.< / P > < P style = " text-align : justify ; " > < / P > < P style = " text-align : justify ; " > Ten slotte drukte ik gewoon op de knop Query Get< / P > < P > < / P > < P > < IMG __jive_id = " 461077 " class = " jive-image image-8 " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 461077_pastedImage_9.png " / > < / P > < P > < / P > < P > En.... dit is het resultaat< / P > < P > < / P > < P > < IMG __jive_id = " 461078 " class = " image-9 jive-image " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 461078_pastedImage_10.png " / > < / P > < P > < / P > < P style = " text-align : justify ; " > In deze tabel bestaan slechts 4 records, als u op een willekeurige object id klikt kunt u informatie over dat record zien. Zoiets als:< / P > < P > < / P > < P >< IMG __jive_id = " 461084 " class = " jive-image image-10 " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 461084_pastedImage_12.png "/>
U zult zien dat er een link bestaat met Attachment Infos, als u daar toegang toe hebt ziet u of er bijlagen zijn

nu als u naar de naam van de afbeelding kijkt is dat een andere link, door erop te klikken kunt u de URL van die afbeelding verkrijgen:

Daarom zou het voor beide gevallen (ArcGIS Online of Portal) zijn https://urldelrestdelfeatureservice/numerodecapaotabla/objectid/attachments/objectid
Belangrijk om te benadrukken is dat het belangrijk is om te weten welke volgorde uw laag of tabel binnen de service heeft, bijvoorbeeld had ik thuis het volgende:
Laag {0}
Tabel {1}
Tabel {2}
Daarom heb ik twee dingen, één het ID dat het nummer is dat zichtbaar is en ten tweede het volgnummer in layer aangezien ik slechts één waarde heb is het volgnummer 0, bij tabellen is de eerste 0 en de tweede 1 volgens het volgnummer. Dit is belangrijk voor regel field_service_layer =(field_service.layers) waar we het juiste volgnummer moeten invullen.
Alles hierboven was bedoeld om te begrijpen wat het volgende script doet:
import arcpy
from arcgis import GIS
import pandas as pd
style="color: #000000;">importeren time
van copy importeren deepcopy
# Verbinden met FAASYSOPS Portal
oursite = GIS("url van het portal of arcgis online","gebruiker", "wachtwoord")
# Update het afbeeldingsveld
def UpdateImageField() :
# init some stuff
features_to_be_updated = []
field_service_dataframe = ''
proberen:
# Verkrijg Field Service Layer (niet de view layer)
field_service = oursite.content.get('id van de service')
field_service_layer = (field_service.layers)[Nummer van de laag of tabel volgens de volgorde]
# Bouw Data Frame
field_service_dataframe = pd.DataFrame.spatial.from_layer(field_service_layer)
# Itereer door dataframe.
voor rij in field_service_dataframe.iterrows():
als (rij[1]['imageurl'] == None of rij[1]['imageurl'] == ''):
# Verkrijg ObjectID en stel image URL in
objID = str(rij[1]['objectid'] 14px;">])<\/SPAN><\/SPAN><\/DIV>
img_url <\/SPAN>=<\/SPAN> <\/SPAN>"urloftheview_View\/FeatureServer\/ID de capa o tabla<\/STRONG><\/SPAN>\/<\/SPAN>{0}<\/SPAN>\/attachment\/<\/SPAN>{0}<\/SPAN>"<\/SPAN>.format(objID)<\/SPAN><\/SPAN><\/DIV><\/P> # init feature and get feature from service<\/SPAN><\/SPAN><\/DIV> feature_to_update <\/SPAN>=<\/SPAN> <\/SPAN>''<\/SPAN><\/SPAN><\/DIV> feature <\/SPAN>=<\/SPAN> field_service_layer.query(<\/SPAN>where<\/SPAN>=<\/SPAN>'OBJECTID = '<\/SPAN>
& nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; # Maak een diepe kopie zodat we onze attributen/structuur behouden en gegevens bijwerken< /span >< /span >< /div > < div stijl=\"kleur:#d4d4d4;border-0;font-grootte-14-px\">& nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; feature_to_update < /span >< span stijl=\"rand-0;font-gewicht-erfgenaam;font-grootte-14-px\">=< /span >< span stijl=\"rand-0;font-gewicht-erfgenaam;font-grootte-14-px\"> deepcopy(feature.features[< /span >< span stijl=\"rand-0;font-gewicht-erfgenaam;font-grootte-14-px\">0< /span >< span stijl=\"rand-0;font-gewicht-erfgenaam;font-grootte-14-px\">])< /span >< /span >< /div > < p > < /p > < div stijl=\"kleur:#d4d4d4;border-0;font-grootte-14-px\">& nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; # Maak veldupdate< /span >< /span >< /div > < div stijl=\"kleur:#d4d4d4;border-0;font-grootte-14-px\">& nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;feature_to_update.attributes[< /span >< span stijl=\"rand-0;font-gewicht-erfgenaam;font-grootte-14-px\">'imageurl'< /span >< span stijl=\"rand -0;font-gewicht-erfgenaam;font-grootte-14-px\">] < /span >< span stijl=\"rand -0;font-gewicht-erfgenaam;font-grootte -14-px \ ">=< /span >< span stijl= \ "rand -0;font - gewicht - erfgenaam;font - grootte - 14 - px \ "> img_url< /span >< /span >< /div > < div stijl= \ "kleur
d4 d4 d4;border :0 px;font - grootte :14 px \ "> < span stijl= \ "kleur :#000000;border :0 px;font - gewicht : erfgenaam;font - grootte :14 px \ ">& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;& nb sp;;features_to_be_updated.append(feature_to_update)< /span > < /div > < p > < /p > < div stijl= \ "kleur
d4 d4 d4;border :0 px;font - grootte :14 px \ "> < span stijl= \ "kleur :#000000 \ "> < span stijl= \ "rand -0;font - gewicht - erfgenaam;font - grootte - 14 px \ ">if< /span > < span > < /span > < span stijl= \ "rand -0;font - gewicht - erfgenaam;font - grootte - 14 px \ ">len< /span > (features_to_be_updated) < span stijl= \ "rand -0;font - gewicht - erfgenaam;font - grootte - 14 px \ ">!=< /span > < span > < /span > < span stijl= \ "rand -0;font - gewicht - erfgenaam,font-grootte,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- :- multimedia voegen een afbeelding toe.<\/P>
<\/P>
<\/P>
<\/P>
In het volgende venster voegen ze het veld toe dat de URL van de bijlage bevat, in mijn geval is dat imageurl<\/P>
<\/P>
<\/P>
<\/P>
Daarna klik je op Accepteren en opnieuw op Accepteren. Nu, als de bijlagen zich in gerelateerde tabellen bevinden zoals in mijn geval, configureer je het pop-upvenster in de gerelateerde tabel(len) op dezelfde manier als je dat met een laag doet.<\/P>
<\/P>
Zodra je klaar bent met het configureren van de pop-upvensters, kun je de afbeeldingen in je webapps zien op de volgende manier (in mijn geval gebruik ik web app builder)<\/P>
<\/P>
<\/P>
<\/P>
<\/P>
<\/P>
<\/P>
<\/P>
Opmerking:<\/STRONG> afhankelijk van de internetsnelheid die je hebt, kan het zijn dat de afbeelding niet automatisch wordt weergegeven, dus je moet een beetje geduld hebben.<\/P><\/P>Ik hoop dat het nuttig voor jullie is.....<\/SPAN><\/P><\/BODY><\/HTML>