[mapguide-users] Add Point to Existing Layer
gaku
hamazato at yachiyo-eng.co.jp
Wed Feb 6 05:36:06 EST 2008
Thanks you.
I went to http://localhost/mapguide/mapagent/index.html
I went to GetResourceContent Link, and perform a query using the ResourceID
like Library://Mysite/Data/test.FeatureSource
I got an XML file like this.
<Provider>OSGeo.SDF</Provider>
<Parameter>
<Name>File</Name>
<Value>%MG_DATA_FILE_PATH%test.sdf</Value>
</Parameter>
<Parameter>
<Name>ReadOnly</Name>
<Value>False</Value>
</Parameter>
Francisco J Rojas D wrote:
>
> Hi There,
>
> You can change the ReadOnly attribute by MapAgent index.html page or
> programmatically
>
> a) Changing by MapAgent web page.
>
> Go to http://servername:port/mapguide[2008]/mapagent/index.html
>
> Go to GetResourceContent Link, and perform a query using the ResourceID
> like Library://Samples/Sheboygan/Data/Parcels.FeatureSource
>
> You will get an XML file like this.
>
> <Provider>OSGeo.SDF</Provider>
>
> <Parameter>
>
> <Name>File</Name>
>
> <Value>%MG_DATA_FILE_PATH%Road.sdf</Value>
>
> </Parameter>
>
> <Parameter>
>
> <Name>ReadOnly</Name>
>
> <Value>TRUE</Value>
>
> </Parameter>
>
>
> You will see a tag <ReadOnly> if that tag value is TRUE change you must
> save the XML file as ParcelsContent.XML, then modify with Notepad changing
> the TRUE value to FALSE.
>
> Then go to http://servername:port/mapguide[2008]/mapagent/index.html, go
> to SetResource, and provide the ResourceID and the Content XML File by
> upload your modified ParcelsContent.XML, for the HEADER field leave it
> empty, click on submit and the SDF file will be read/write now.
>
> b) Changing Programmatically
>
> Use the next routines and examples :
>
> // This routine makes a resource writable
>
> private void set_ResourceWriteAble(MgResourceIdentifier resoureId,
> MgResourceService resourceService)
> {//by knife114
>
> //-----------------------------------------------------------------------------
> String buffer;
> MgByteReader reader =
> resourceService.GetResourceContent(resoureId);
> buffer = reader.ToString();
> if (buffer.Contains("<Value>TRUE</Value>"))
> {
> buffer = buffer.Replace("<Value>TRUE</Value>",
> "<Value>FALSE</Value>");
> Byte[] buf_Byte =
> System.Text.Encoding.Default.GetBytes(buffer);
> MgByteSource byteSource = new MgByteSource(buf_Byte,
> buf_Byte.Length);
>
> resourceService.SetResource(resoureId, byteSource.GetReader(),
> null);
> }
>
> //-----------------------------------------------------------------------------
> }
>
> This is an example code using the code above:
>
> MgGeometryFactory geoFac = new MgGeometryFactory();
> MgLinearRingCollection LinearRingCollection = new
> MgLinearRingCollection();
> MgCoordinateCollection CoordinateCollection = new
> MgCoordinateCollection();
>
>
> String[] coods = this.TextBox1.Text.Split(',');
> for (int i = 1; i <= Convert.ToInt16(coods[0])*2 ; i+=2)
> {
> double x = Convert.ToDouble(coods[i]);
> double y = Convert.ToDouble(coods[i+1]);
> MgCoordinate coordinate = geoFac.CreateCoordinateXY(x,
> y);
> CoordinateCollection.Add(coordinate);
> //MgPoint point = new
> MgGeometryFactory().CreatePoint(coordinate);
> }
>
> MgLinearRing LinearRing =
> geoFac.CreateLinearRing(CoordinateCollection);
> CoordinateCollection.Clear();
> LinearRingCollection.Add(LinearRing);
> MgPolygon Polygon = geoFac.CreatePolygon(LinearRing, null);
>
>
> //propertyCol.Add(new MgInt32Property("Autogenerated_SDF_ID",
> 11));
> propertyCol.Add(new MgStringProperty("Name", "it's me"));
> propertyCol.Add(new MgInt32Property("Key", 11));
> propertyCol.Add(new MgStringProperty("Url", "me,too"));
>
> //Polygon.
> propertyCol.Add(new MgGeometryProperty("Data",
> geometryReaderWriter.Write(Polygon)));
>
> ftrCmdCol.Add(new MgInsertFeatures(lyrClass, propertyCol));
>
> set_ResourceWriteAble(resoureId, resourceService); // set sdf
> readonly=false
>
> if (ftrCmdCol.Count >= 1)
> {
> ReleaseReader(ftrService.UpdateFeatures(resoureId,
> ftrCmdCol, false), ftrCmdCol);
>
> layerToSave.ForceRefresh();
> map.Save(resourceService);
> }
>
> Regards
>
> Francisco J Rojas D
>
>
>
> Pascal Coulon wrote:
>>
>> Hi There,
>>
>> When creating a layer (SDF) in Studio. It is created in ReadOnly mode.
>> You need to enable read/write by using the mapagent. Let me know if you
>> need any further details.
>>
>> Regards,
>>
>> pascal
>>
>>
>>
>> Jackie Ng wrote:
>>>
>>> Open two browser windows/tabs, one to your web application that adds the
>>> points. Another to the schemareport page (usually at
>>> http://servername:port/mapguide/schemareport/main.php )
>>>
>>> Run your add point routine, then check if the schemareport for that
>>> feature source has included the point you have just added.
>>>
>>> If the point is there, then i suspect it is something to do with the
>>> layer that's based off of the feature source.
>>>
>>> Otherwise, your php script is clearly failing to insert the new point
>>> feature.
>>>
>>> - Jackie
>>>
>>>
>>> gaku wrote:
>>>>
>>>> Yes,I have created site resources by use Administrator username.
>>>>
>>>>
>>>>
>>>> -gaku
>>>>
>>>>
>>>> Jackie Ng wrote:
>>>>>
>>>>> Oh I see, I thought you were adding points to a session-based feature
>>>>> source.
>>>>>
>>>>> In that case, did you create a mapguide session via a username that
>>>>> has permissions to modify site resources?
>>>>>
>>>>> - Jackie
>>>>>
>>>>>
>>>>> gaku wrote:
>>>>>>
>>>>>> Yes, I have created the feature source by using Mapguide Studio.
>>>>>>
>>>>>>
>>>>>> Jackie Ng wrote:
>>>>>>>
>>>>>>> Have you actually created the feature source pointed to by
>>>>>>> $featureSourceId ? (ie. Have you called
>>>>>>> $featureService->CreateFeatureSource() ?)
>>>>>>>
>>>>>>> - Jackie
>>>>>>>
>>>>>>>
>>>>>>> gaku wrote:
>>>>>>>>
>>>>>>>> Hi all
>>>>>>>>
>>>>>>>> I'm trying to let the user insert a point feature in PHP along with
>>>>>>>> some attributes. The feature source is an SDF file and the code was
>>>>>>>> translated/modified from the PHP example (draw_line). The user can
>>>>>>>> get the X, Y coordinates from another button (works fine).
>>>>>>>>
>>>>>>>> Everything compiles fine and execute well but no feature is added
>>>>>>>> to the feature source. I tried with a converted SDF feature source
>>>>>>>> (didnt change a thing).
>>>>>>>>
>>>>>>>> Did I miss something ? Did I do something wrong :)
>>>>>>>>
>>>>>>>> Any help would be appreciated
>>>>>>>>
>>>>>>>> here's the code :
>>>>>>>>
>>>>>>>> ------------------------------------------------------------
>>>>>>>>
>>>>>>>> try
>>>>>>>> {
>>>>>>>> MgInitializeWebTier($webconfigFilePath);
>>>>>>>>
>>>>>>>> // Get the session information passed from the viewer.
>>>>>>>> $sessionId = ($_SERVER['REQUEST_METHOD'] ==
>>>>>>>> "POST")?$_POST['SESSION']: $_GET['SESSION'];
>>>>>>>>
>>>>>>>> // Get the user information using the session id,
>>>>>>>> // and set up a connection to the site server.
>>>>>>>> $userInfo = new MgUserInformation($sessionId);
>>>>>>>> $siteConnection = new MgSiteConnection();
>>>>>>>> $siteConnection->Open($userInfo);
>>>>>>>>
>>>>>>>>
>>>>>>>> $resourceService =
>>>>>>>> $siteConnection->CreateService(MgServiceType::ResourceService);
>>>>>>>> $featureService =
>>>>>>>> $siteConnection->CreateService(MgServiceType::FeatureService);
>>>>>>>> $featureSourceId = new
>>>>>>>> MgResourceIdentifier('Library://Sample/Data/020101Markup.FeatureSource');
>>>>>>>>
>>>>>>>>
>>>>>>>> $map = new MgMap();
>>>>>>>> $map->Open($resourceService, $mgMapName);
>>>>>>>>
>>>>>>>> //$geometryFactory = new MgGeometryFactory();
>>>>>>>> $wktReaderWriter = new MgWktReaderWriter();
>>>>>>>> $agfReaderWriter = new MgAgfReaderWriter();
>>>>>>>>
>>>>>>>> $geo = $wktReaderWrite->Read("POINT XY ( $x, $y )");
>>>>>>>>
>>>>>>>> $geoByteReader = new MgByteReader();
>>>>>>>> $geoByteReader = $agfReaderWriter->Write($geo);
>>>>>>>>
>>>>>>>> $idid = 500;
>>>>>>>>
>>>>>>>> $propertyValues = new MgPropertyCollection();
>>>>>>>> $propertyValues->Add(new MgInt32Property("ID", $idid ));
>>>>>>>> $propertyValues->Add(new MgStringProperty(name, 'test'));
>>>>>>>> $propertyValues->Add(new MgGeometryProperty('Geometry',
>>>>>>>> $geoByteReader));
>>>>>>>>
>>>>>>>> $commands = new MgFeatureCommandCollection();
>>>>>>>> $commands->Add(new MgInsertFeatures('020101Markup',
>>>>>>>> $propertyValues));
>>>>>>>> $featureService->UpdateFeatures($featureSourceId, $commands,
>>>>>>>> false);
>>>>>>>>
>>>>>>>>
>>>>>>>> }
>>>>>>>> catch (MgException $e)
>>>>>>>> {
>>>>>>>> $errorMsg = $e->GetMessage();
>>>>>>>> $errorDetail = $e->GetDetails();
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> -------------------------------end of code -------------
>>>>>>>>
>>>>>>>> --Thanks,
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/Add-Point-to-Existing-Layer-tp15136337s16610p15306462.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list