【问题标题】:ArcGIS Online: Populate an existing form dynamically with Hosted Feature Layer DataArcGIS Online:使用托管要素图层数据动态填充现有表单
【发布时间】:2021-08-10 19:17:23
【问题描述】:

我有一个预先存在的表单(.pdf 和 .doc),我正在尝试使用来自 ArcGIS Online 托管要素图层的属性数据进行填充。我不确定是否可以通过 FPDF 使用 ArcGIS API for Javascript?或者如果有其他方法可以做这样的事情。

我尝试了以下方法,效果很好,但我不想定期下载数据来处理任何传入的新数据。另外,我希望在以下情况下生成此表单用户点击网络地图应用程序弹出窗口中的链接(下面的屏幕截图)。

https://justincolegis.com/2017/12/13/using-survey123-or-any-gis-data-to-populated-reports-in-word/

screenshot of popup

**更新:基本上我不知道该怎么做,因为将我们的数据移动到托管要素图层,是如何从要素中获取属性并将该信息放入已经存在的 pdf 文档/表单中。

下面是 PHP 文件的一部分,它通过查询 Oracle 表来使用 FPDF 和数组。这适用于驻留在我们服务器上的 Oracle 表中的旧数据,但不适用于自从将其移动到托管要素图层后进入图层的新数据。

    /Query
    $query = 'SELECT OBJECTID, SITEID, TARGET_SPECIES, DATE_TREATMENT, WATER_BODY,
     AQ_WORKERS, AQ_WEATHER, AQ_WINDSPEED, AQ_TEMP, AQ_WINDDIRECTION, AQ_TOTAL_AI,
     AQ_MIX_USED, AQ_RAIN, AQ_TREATMENT_TYPE, LOCATION, ST_GROUP, COUNTY, AQ_CONTROL_METHOD,
     AQ_APPLICATION_METHOD, AQ_CHEMICALUSED, CH_EPACONCENTRATION,
     AQ_CHEMICALUSED2, CH_EPACONCENTRATION2, MT_COMPANY, NPDES_COC, PDMP,
     AQ_RATEOFAPPLICATION, LATITUDE, LONGITUDE, AQ_MIX_RATE, APPLICATION_AREA, 
     AQ_EFFECTIVENESS FROM WEB_AQTREATMENT WHERE OBJECTID = '.$_GET['id'];

        ob_start();
        $pdf = new FPDI();
        $pdf->addPage('P');
        $pagecount = $pdf->setSourceFile('../../../../../treatment_form.pdf');
        $tplIdx = $pdf->importPage(1);
        $pdf->useTemplate($tplIdx);
        $pdf->SetFont('Helvetica','I',9);
        $pdf->SetTextColor(0,0,0);
        //
        //PERMITTEE INFORMATION
        //
        //PermitNumber (L/R), (U/D)
        $pdf->SetXY(114, 69);
        $pdf->Write(0, $array[20]);
        //Permittee Name (L/R), (U/D)
        $pdf->SetXY(114, 80);
        $pdf->Write(0, $array[19]);
        //Body of Water Treated (L/R), (U/D)
        $pdf->SetXY(114, 92);
        $pdf->Write(0, $array[4]);
        //County
        $pdf->SetXY(176, 92);
        $pdf->Write(0, $array[16]);
        //Date (L/R), (U/D)
        $pdf->SetXY(41.5, 135.5);
        //$pdf->MultiCell(30,5,$array[3],0, 'L');
        $pdf->Write(0,$array[3]);
        //Name of Person Applying Chemical (L/R), (U/D)
        $pdf->SetXY(73, 134);
        $pdf->MultiCell(65,5,$array[5],0,'L');
        //Name of Company (L/R), (U/D)
        $pdf->SetXY(142, 136.5);
        $pdf->Write(0, $array[25]);

【问题讨论】:

  • 如果您要添加一个指向弹出窗口的链接,那么您已经有了特征数据,是弹出窗口中的特征.. 您是否质疑如何访问弹出窗口显示的特征数据? ..你能添加一些上下文代码,它可能会澄清问题
  • 我有一些托管的要素图层,在自定义弹出窗口中,我有一个链接,该链接使用要素的对象 ID 作为 URL 参数,以使用我使用 PHP 创建的 PHP 文件返回有关该要素的信息& FPDF(例如:mt_record.php?id=5824),但由于我们将此数据移至 ArcGIS Online,因此无法正常工作。当我们在自己的 Oracle 表中托管这些层时,很容易使用 FPDF 和 PHP 来查询 Oracle 表并将属性放入预先存在的表单中,但是现在这些层托管在 AGO 中,我知道如何获取这些属性并将它们放入预先存在的表单中。

标签: arcgis-js-api arcgis-online


【解决方案1】:

如果要素服务在表单中包含您需要的所有字段,那么您可以发送您需要的所有字段,而不是仅发送 id,或者您甚至可以使用图形toJSON 方法对其进行序列化,然后发送所有内容,

function popupContent (feature) {
    // your custom popup content
    ...
    // instead of sending id send all the graphic data
    fetch(url, {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        headers: {
          'Content-Type': 'application/json'
        },
        body: feature.graphic.toJSON()
    });
    ...
}

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多