
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
django==2.2
is supported. Install the graphene-gis
with pip:
$ pip install graphene-gis
Make sure that you have appropriate driver to interact with postgis-- psycopg2
or
psycopg2-binary
. The binary package is a practical choice for development and testing
but in production it is advised to use the package built from sources. More info here.
Add it to your INSTALLED_APPS
in settings.py
:
INSTALLED_APPS = [
...
'graphene_gis',
]
Hi, check this-> geoql project out,
it demonstrates usage-- such as querying, mutations using WKT
and geojson
.
I will be adding more stuff soon such as containerization, interactive UI etc,
and more examples that showcases the library. This project provides an insight
into real-world usage of the library, do check it out.
This extension can works out of the box with WKT
, but if you want to use
GeoJSON
for input while mutations, install rest_framework_gis
alongside
it-- or check out geoql
sample project.
models.py
from django.contrib.gis.db import models
class Place(models.Model):
name = models.CharField(max_length=255)
location = models.PointField()
schema.py
from graphene_django import DjangoObjectType
from graphene_gis.converter import gis_converter # noqa
class PlaceType(DjangoObjectType):
class Meta:
model = Place
class Query(graphene.ObjectType):
place = graphene.Field(Place)
def resolve_place(self, info):
return Place(name="San Andreas", location="POINT(34.2 54.3)")
schema = graphene.Schema(query=Query)
Query
query {
place {
name
location
}
}
Query Output
"place": {
"name": "San Andreas",
"location": {
"type": "Point",
"coordinates": [34.2, 54.3]
}
}
schema.py
class PointModelType(graphene.ObjectType):
location = graphene.Field(graphene.String, to=scalars.PointScalar())
class CreatePointModelType(graphene.Mutation):
point = graphene.Field(PointModelType)
class Arguments:
location = graphene.Argument(scalars.PointScalar)
def mutate(root, info, location):
point = PointModelType(location=location)
return CreatePointModelType(point=point)
Mutation
mutation {
createPoint (location: "POINT(3 5)") {
point {
location
}
}
}
Mutation Output
"createPoint": {
"point": {
"location": "{'type': 'Point', 'coordinates': [3.0, 5.0]}"
}
}
A JSON Converter, so if you're familiar with graphene
, you know that
it sends JSONField
as stringified JSON, but with a lot of data, you
dont want to parse it in the frontend, I know it goes against having a
static type, but if you're not modifying the data on the frontend, plus
you're using typescript
which enforces types anyway, it works like a
charm.
And geojson contains JSONField
like properties section, and parsing
every node in the frontend is cumbersome if you have ~9000 entries, also
time consuming.
Output without using json_converter
{
"data": {
"vectors": [
{
"type": "Feature",
"properties": "{\"Name\": \"Blues\", \"area\": 0.0006971253332413299, \"bbox\": [74.59639001261124, 24.7077612714826, 74.61615129922414, 24.755648349214077], \"perimeter\": 0.15862406542812008}",
"geometry": {
"type": "Polygon",
"coordinates": [...]
}
}
]
}
}
Now if you're working with GeoJSON, you're not working with just one vector,
you're probably working with thousands. Voila json_converter
!!! Now you can
plot it directly, if you store it in such a way! I won't go into how to structure
the model, but this is fairly accurate description of GeoJSON
, and anyone
familiar with django
will be able to reproduce it without issues.
{
"data": {
"allVectors": [
{
"type": "Feature",
"properties": {
"Name": "Blues",
"area": 0.0006971253332413299,
"bbox": [
74.59639001261124,
24.7077612714826,
74.61615129922414,
24.755648349214077
],
"perimeter": 0.15862406542812008
},
"geometry": {
"type": "Polygon",
"coordinates": [...]
}
}
]
}
}
Rishabh Mehta eternal.blizzard23@gmail.com
If you have any issues or queries regarding acadbot, please don't hesitate to email the @author. I have a lot of free time.
I forget stuff, this section is for anyone who wants to build the package.
$ python setup.py sdist
$ twine upload dist/*
Targeting graphene-v3 update by March'22 -> MR
Install the pre-release using:
Django 4.2 LTS support by May'23
pip install graphene-gis==0.0.8b0
This code falls under the MIT license which permits the reuse of the proprietary software provided that all copies of the licensed software include a copy of the MIT License terms and the copyright notice. Go crazy!
FAQs
GIS support for graphene-django
We found that graphene-gis demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.