Dumped on 2017-01-03

Index of database - pvsadmin


Table: additional

additional Structure
F-Key Name Type Description
additional_id serial PRIMARY KEY
name character varying NOT NULL DEFAULT ''::character varying
active boolean

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: additional_candidate

additional_candidate Structure
F-Key Name Type Description
additional_candidate_id serial PRIMARY KEY
additional.additional_id additional_id integer NOT NULL
candidate.candidate_id candidate_id integer NOT NULL
actext character varying NOT NULL DEFAULT ''::character varying

Tables referencing this one via Foreign Key Constraints:

additional_candidate__additional_id additional_id additional_candidate__candidate_id candidate_id

Index - Schema public


Table: additional_candidate_category

additional_candidate_category Structure
F-Key Name Type Description
additional_candidate_category_id serial PRIMARY KEY
additional_candidate.additional_candidate_id additional_candidate_id integer NOT NULL
category.category_id category_id smallint NOT NULL
additional_candidate_category__additional_candidate_id additional_candidate_id

Index - Schema public


Table: additional_candidate_tag

additional_candidate_tag Structure
F-Key Name Type Description
additional_candidate_tag_id serial PRIMARY KEY
additional_candidate.additional_candidate_id additional_candidate_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL
additional_candidate_tag__additional_candidate_id additional_candidate_id

Index - Schema public


Table: additional_category

additional_category Structure
F-Key Name Type Description
additional_category_id serial PRIMARY KEY
additional.additional_id additional_id integer NOT NULL
category.category_id category_id smallint NOT NULL
additional_category__cat category_id

Index - Schema public


Table: additional_tag

additional_tag Structure
F-Key Name Type Description
additional_tag_id serial PRIMARY KEY
additional.additional_id additional_id integer
tag.tag_id tag_id integer

Index - Schema public


Table: addr2zip

addr2zip Structure
F-Key Name Type Description
addr2zip_id character varying NOT NULL
zip5 integer
zip4_low smallint
zip4_high smallint
street_direction character varying
street_name character varying
street_suffix character varying
street_post_direction character varying
primary_address_low character varying
primary_address_high character varying
primary_address_parity character varying
building_or_firm_name character varying
secondary_address character varying
secondary_address_low character varying
secondary_address_high character varying
secondary_address_parity character(1)
state_id character(2)
county_code smallint
municipality_key character varying
urbanization_key character varying
record_type character(1)
addr2zip_new_zip5 zip5

Index - Schema public


Table: addresstype

addresstype Structure
F-Key Name Type Description
addresstype_id smallint PRIMARY KEY
addcity boolean NOT NULL DEFAULT false
name character varying NOT NULL DEFAULT ''::character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: auth_group

auth_group Structure
F-Key Name Type Description
id serial PRIMARY KEY
name character varying(80) UNIQUE NOT NULL

Tables referencing this one via Foreign Key Constraints:

auth_group_name_dc224be766d4f2e_like name varchar_pattern_ops

Index - Schema public


Table: auth_group_permissions

auth_group_permissions Structure
F-Key Name Type Description
id serial PRIMARY KEY
auth_group.id group_id integer UNIQUE#1 NOT NULL
auth_permission.id permission_id integer UNIQUE#1 NOT NULL
auth_group_permissions_0e939a4f group_id auth_group_permissions_8373b171 permission_id

Index - Schema public


Table: auth_permission

auth_permission Structure
F-Key Name Type Description
id serial PRIMARY KEY
name character varying(255) NOT NULL
django_content_type.id content_type_id integer UNIQUE#1 NOT NULL
codename character varying(100) UNIQUE#1 NOT NULL

Tables referencing this one via Foreign Key Constraints:

auth_permission_417f1b1c content_type_id

Index - Schema public


Table: auth_user

auth_user Structure
F-Key Name Type Description
id serial PRIMARY KEY
password character varying(128) NOT NULL
last_login timestamp with time zone
is_superuser boolean NOT NULL
username character varying(30) UNIQUE NOT NULL
first_name character varying(30) NOT NULL
last_name character varying(30) NOT NULL
email character varying(254) NOT NULL
is_staff boolean NOT NULL
is_active boolean NOT NULL
date_joined timestamp with time zone NOT NULL

Tables referencing this one via Foreign Key Constraints:

auth_user_username_170c4f1399d77579_like username varchar_pattern_ops

Index - Schema public


Table: auth_user_groups

auth_user_groups Structure
F-Key Name Type Description
id serial PRIMARY KEY
auth_user.id user_id integer UNIQUE#1 NOT NULL
auth_group.id group_id integer UNIQUE#1 NOT NULL
auth_user_groups_0e939a4f group_id auth_user_groups_e8701ad4 user_id

Index - Schema public


Table: auth_user_user_permissions

auth_user_user_permissions Structure
F-Key Name Type Description
id serial PRIMARY KEY
auth_user.id user_id integer UNIQUE#1 NOT NULL
auth_permission.id permission_id integer UNIQUE#1 NOT NULL
auth_user_user_permissions_8373b171 permission_id auth_user_user_permissions_e8701ad4 user_id

Index - Schema public


Table: biotext

biotext Structure
F-Key Name Type Description
biotext_id serial PRIMARY KEY
biotext text
officelevel_id character(1)
biotype_id smallint

Tables referencing this one via Foreign Key Constraints:

biotext__biotext biotext biotext__biotype_id biotype_id

Index - Schema public


Table: biotext_candidate

biotext_candidate Structure
F-Key Name Type Description
biotext_id integer
candidate_id integer
officelevel_id character(1)
bt_biotext_id biotext_id bt_candidate_id candidate_id

Index - Schema public


Table: biotext_category

biotext_category Structure
F-Key Name Type Description
biotext_category_id serial PRIMARY KEY
biotext.biotext_id biotext_id integer NOT NULL
category.category_id category_id smallint NOT NULL
biotext_category__biotext_id biotext_id biotext_category__category_id category_id

Index - Schema public


Table: biotext_tag

biotext_tag Structure
F-Key Name Type Description
biotext_tag_id serial PRIMARY KEY
biotext.biotext_id biotext_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL
biotext_tag__biotext_id biotext_id biotext_tag__tag_id tag_id

Index - Schema public


Table: biotextlocking

biotextlocking Structure
F-Key Name Type Description
biotext_id integer
committed boolean NOT NULL DEFAULT false
accessedby character varying
accessed timestamp without time zone

Index - Schema public


Table: biotype

biotype Structure
F-Key Name Type Description
biotype_id smallint PRIMARY KEY
name text
experiencetype_id character(1)

Index - Schema public


Table: candidate

candidate Structure
F-Key Name Type Description
candidate_id serial PRIMARY KEY
candidatestatus.candidatestatus_id candidatestatus_id smallint NOT NULL DEFAULT 1
candidatetitle.candidatetitle_id candidatetitle_id smallint NOT NULL
state.state_id state_id character(2) NOT NULL DEFAULT 'NA'::bpchar
release.release_id release_id smallint NOT NULL DEFAULT 2
firstname character varying NOT NULL DEFAULT ''::character varying
middlename character varying NOT NULL DEFAULT ''::character varying
lastname character varying NOT NULL DEFAULT ''::character varying
nickname character varying NOT NULL DEFAULT ''::character varying
pronunciation character varying NOT NULL DEFAULT ''::character varying
gender character(1) NOT NULL DEFAULT ''::bpchar
suffix character varying NOT NULL DEFAULT ''::character varying
birthdate character varying NOT NULL DEFAULT ''::character varying
birthplace character varying NOT NULL DEFAULT ''::character varying
homecity character varying NOT NULL DEFAULT ''::character varying
education text DEFAULT ''::text
family text NOT NULL DEFAULT ''::text
profession text DEFAULT ''::text
political text DEFAULT ''::text
religion text NOT NULL DEFAULT ''::text
orgmember text DEFAULT ''::text
specialmsg text NOT NULL DEFAULT ''::text
caucus text DEFAULT ''::text
bioformyear smallint
fecid character varying NOT NULL DEFAULT ''::bpchar
photourl character varying NOT NULL DEFAULT ''::character varying
bioid character varying
callnote text NOT NULL DEFAULT ''::text
password character varying
candidatepreferredname.candidatepreferredname_id candidatepreferredname_id character(1) NOT NULL DEFAULT 'F'::bpchar
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

candidate__bioid bioid candidate__candidatetitle_id candidatetitle_id candidate__lastname lastname candidate__lastname_upper upper((lastname)::text) candidate__release_id release_id candidate__state_id state_id candidate__unaccent_lastname unaccent((lastname)::text)

Index - Schema public


Table: candidate_election_candidate

candidate_election_candidate Structure
F-Key Name Type Description
candidate_election_candidate_id serial PRIMARY KEY
candidate.candidate_id candidate_id integer NOT NULL
election_candidate.election_candidate_id election_candidate_id integer NOT NULL
candidate_election_candidate__candidate_id candidate_id candidate_election_candidate__election_candidate_id election_candidate_id

Index - Schema public


Table: candidatepreferredname

candidatepreferredname Structure
F-Key Name Type Description
candidatepreferredname_id character(1) PRIMARY KEY
name character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: candidatestatus

candidatestatus Structure
F-Key Name Type Description
candidatestatus_id smallint PRIMARY KEY DEFAULT nextval(('candidatestatus_id_seq'::text)::regclass)
name character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: candidatetitle

candidatetitle Structure
F-Key Name Type Description
candidatetitle_id smallint PRIMARY KEY DEFAULT nextval(('candidatestatus_id_seq'::text)::regclass)
title character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: catcode_category

catcode_category Structure
F-Key Name Type Description
catcode_category_id serial PRIMARY KEY
finance_catcode.finance_catcode_id finance_catcode_id integer NOT NULL
category.category_id category_id integer NOT NULL

Index - Schema public


Table: category

category Structure
F-Key Name Type Description
category_id smallint PRIMARY KEY DEFAULT nextval(('category_id_seq'::text)::regclass)
name character varying NOT NULL
release.release_id release_id smallint
description text
rank smallint
key boolean NOT NULL DEFAULT false

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: category_category

category_category Structure
F-Key Name Type Description
category_category_id serial PRIMARY KEY
category_id integer NOT NULL
parent_id integer NOT NULL

Index - Schema public


Table: category_released

category_released Structure
F-Key Name Type Description
unreleased_category_id smallint
released_category_id smallint

Index - Schema public


Table: category_released_new

category_released_new Structure
F-Key Name Type Description
unreleased_category_id smallint
released_category_id smallint

Index - Schema public


Table: category_section

category_section Structure
F-Key Name Type Description
category_section_id smallint PRIMARY KEY DEFAULT nextval('category_section_id_seq'::regclass)
category.category_id category_id smallint NOT NULL
section.section_id section_id character(1) NOT NULL

Index - Schema public


Table: category_tag

category_tag Structure
F-Key Name Type Description
category_tag_id serial PRIMARY KEY
category.category_id category_id integer
tag.tag_id tag_id integer

Index - Schema public


Table: committee

committee Structure
F-Key Name Type Description
committee_id serial PRIMARY KEY
parent_id integer NOT NULL
state.state_id state_id character(2) NOT NULL
committeetype.committeetype_id committeetype_id character(1) NOT NULL
name character varying NOT NULL DEFAULT ''::character varying
address1 character varying NOT NULL DEFAULT ''::character varying
address2 character varying NOT NULL DEFAULT ''::character varying
zip character varying NOT NULL DEFAULT ''::character varying
phone character varying NOT NULL DEFAULT ''::character varying
fax character varying NOT NULL DEFAULT ''::character varying
email character varying NOT NULL DEFAULT ''::character varying
url character varying NOT NULL DEFAULT ''::character varying
staffcontact character varying NOT NULL DEFAULT ''::character varying
jurisdiction text NOT NULL DEFAULT ''::text
city character varying NOT NULL DEFAULT ''::character varying
state character(2)
active boolean NOT NULL DEFAULT true
special boolean

Tables referencing this one via Foreign Key Constraints:

committee__committee_id parent_id committee__state_id state_id

Index - Schema public


Table: committee_archive

committee_archive Structure
F-Key Name Type Description
committee_id integer NOT NULL
parent_id integer NOT NULL
state_id character(2) NOT NULL
committeetype_id character(1) NOT NULL
name character varying NOT NULL DEFAULT ''::character varying
address1 character varying NOT NULL DEFAULT ''::character varying
address2 character varying NOT NULL DEFAULT ''::character varying
zip character varying NOT NULL DEFAULT ''::character varying
phone character varying NOT NULL DEFAULT ''::character varying
fax character varying NOT NULL DEFAULT ''::character varying
email character varying NOT NULL DEFAULT ''::character varying
url character varying NOT NULL DEFAULT ''::character varying
staffcontact character varying NOT NULL DEFAULT ''::character varying
jurisdiction text NOT NULL DEFAULT ''::text
city character varying NOT NULL DEFAULT ''::character varying
state character(2)
active boolean NOT NULL DEFAULT true
special boolean
committee_archive__parent_id parent_id committee_archive__state_id state_id

Index - Schema public


Table: committee_candidate

committee_candidate Structure
F-Key Name Type Description
committee_candidate_id serial PRIMARY KEY
committee.committee_id committee_id integer NOT NULL
office_candidate.office_candidate_id office_candidate_id integer NOT NULL
committeeposition.committeeposition_id committeeposition_id character(1)
termstart flexdate
termend flexdate
created timestamp without time zone
modified timestamp without time zone
committee_candidate__committee_id committee_id committee_candidate__committeeposition_id committeeposition_id committee_candidate__office_candidate_id office_candidate_id

Index - Schema public


Table: committee_candidate_archive

committee_candidate_archive Structure
F-Key Name Type Description
committee_candidate_id integer NOT NULL
committee_id integer NOT NULL
office_candidate_id integer NOT NULL
committeeposition_id character(1)
committee_candidate_archive__committee_id committee_id committee_candidate_archive__committeeposition_id committeeposition_id committee_candidate_archive__office_candidate_id office_candidate_id

Index - Schema public


Table: committee_category

committee_category Structure
F-Key Name Type Description
committee_category_id serial PRIMARY KEY
committee.committee_id committee_id integer NOT NULL
category.category_id category_id smallint NOT NULL

Index - Schema public


Table: committee_positions

committee_positions Structure
F-Key Name Type Description
state_id character(2)
candidate_id integer
office_candidate_id integer
committee_id integer
lastname character varying
firstname character varying
committee_name character varying
committee_position character varying
active boolean

Index - Schema public


Table: committee_tag

committee_tag Structure
F-Key Name Type Description
committee_tag_id serial PRIMARY KEY
committee.committee_id committee_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL

Index - Schema public


Table: committeeposition

committeeposition Structure
F-Key Name Type Description
committeeposition_id character(1) PRIMARY KEY
name character varying NOT NULL DEFAULT ''::character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: committeetype

committeetype Structure
F-Key Name Type Description
committeetype_id character(1) PRIMARY KEY
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congaction

congaction Structure
F-Key Name Type Description
congaction_id character(1) PRIMARY KEY
congactiontype.congactiontype_id congactiontype_id character(1)
name character varying NOT NULL
rank smallint NOT NULL
code character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congactiontype

congactiontype Structure
F-Key Name Type Description
congactiontype_id character(1) PRIMARY KEY
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congcategory

congcategory Structure
F-Key Name Type Description
congcategory_id serial PRIMARY KEY

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congcategory_category

congcategory_category Structure
F-Key Name Type Description
congcategory_category_id serial PRIMARY KEY
congcategory.congcategory_id congcategory_id integer NOT NULL
category.category_id category_id smallint NOT NULL
congcategory_category__category_id category_id congcategory_category__congcategory_id congcategory_id

Index - Schema public


Table: congcategory_tag

congcategory_tag Structure
F-Key Name Type Description
congcategory_tag_id serial PRIMARY KEY
congcategory.congcategory_id congcategory_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL
congcategory_tag__congcategory_id congcategory_id congcategory_tag__tag_id tag_id

Index - Schema public


Table: congdoc

congdoc Structure
F-Key Name Type Description
congdoc_id serial PRIMARY KEY
congdocgroup.congdocgroup_id congdocgroup_id integer NOT NULL
name text NOT NULL DEFAULT ''::text
filename text
description text NOT NULL DEFAULT ''::text
rank smallint
congdoc__congdocgroup_id congdocgroup_id

Index - Schema public


Table: congdocgroup

bundles several cong docs together that are to follow multiple congstatuses

congdocgroup Structure
F-Key Name Type Description
congdocgroup_id serial PRIMARY KEY

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: conghighlight

conghighlight Structure
F-Key Name Type Description
conghighlight_id serial PRIMARY KEY
highlight text NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: conglevel

conglevel Structure
F-Key Name Type Description
conglevel_id character(1) PRIMARY KEY
name character varying NOT NULL
rank smallint NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: conglevel_office

conglevel_office Structure
F-Key Name Type Description
conglevel_office_id smallint PRIMARY KEY DEFAULT nextval(('conglevel_office_id_seq'::text)::regclass)
conglevel_id character(1) NOT NULL
office_id smallint NOT NULL
stateleg boolean NOT NULL

Index - Schema public


Table: congnote

congnote Structure
F-Key Name Type Description
congnote_id smallint PRIMARY KEY DEFAULT nextval(('congnote_id_seq'::text)::regclass)
name character varying NOT NULL
note character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congnote_congress

congnote_congress Structure
F-Key Name Type Description
congnote_congress_id serial PRIMARY KEY
congnote.congnote_id congnote_id smallint NOT NULL
congress.congress_id congress_id integer NOT NULL

Index - Schema public


Table: congnote_stage

congnote_stage Structure
F-Key Name Type Description
congnote_stage_id serial PRIMARY KEY
congnote.congnote_id congnote_id smallint NOT NULL
congstage.congstage_id congstage_id smallint NOT NULL

Index - Schema public


Table: congnote_state

congnote_state Structure
F-Key Name Type Description
congnote_state_id smallint PRIMARY KEY DEFAULT nextval(('congnote_state_id_seq'::text)::regclass)
congnote.congnote_id congnote_id smallint NOT NULL
state.state_id state_id character(2) NOT NULL
congnote_state__congnote_id congnote_id congnote_state__state_id state_id

Index - Schema public


Table: congnote_status

congnote_status Structure
F-Key Name Type Description
congnote_status_id serial PRIMARY KEY
congnote.congnote_id congnote_id smallint NOT NULL
congstatus.congstatus_id congstatus_id integer NOT NULL

Index - Schema public


Table: congnote_type

congnote_type Structure
F-Key Name Type Description
congnote_type_id serial PRIMARY KEY
congnote.congnote_id congnote_id smallint NOT NULL
congtype.congtype_id congtype_id character(1) NOT NULL

Index - Schema public


Table: congofficialsynopsis

congofficialsynopsis Structure
F-Key Name Type Description
congofficialsynopsis_id serial PRIMARY KEY
officialsynopsis text NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congofficialtitle

congofficialtitle Structure
F-Key Name Type Description
congofficialtitle_id serial PRIMARY KEY
officialtitle text NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congoutcome

congoutcome Structure
F-Key Name Type Description
congoutcome_id smallint PRIMARY KEY DEFAULT nextval(('congoutcome_id_seq'::text)::regclass)
name character varying NOT NULL
rank smallint NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congoutcometext

congoutcometext Structure
F-Key Name Type Description
congoutcometext_id smallint PRIMARY KEY DEFAULT nextval('congoutcometext_id_seq'::regclass)
outcometext character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congprefix

congprefix Structure
F-Key Name Type Description
congprefix_id smallint PRIMARY KEY DEFAULT nextval(('congprefix_id_seq'::text)::regclass)
prefix character varying NOT NULL
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congprefix_state

congprefix_state Structure
F-Key Name Type Description
congprefix_state_id smallint PRIMARY KEY DEFAULT nextval(('congprefix_state_id_seq'::text)::regclass)
congprefix.congprefix_id congprefix_id smallint NOT NULL
state.state_id state_id character(2) NOT NULL

Index - Schema public


Table: congress

congress Structure
F-Key Name Type Description
congress_id serial PRIMARY KEY
parent_id integer
congtype.congtype_id congtype_id character(1) NOT NULL
state.state_id state_id character(2) NOT NULL
release_id smallint NOT NULL
billnumber character varying NOT NULL
law character varying NOT NULL DEFAULT ''::character varying
url character varying NOT NULL DEFAULT ''::character varying
path ltree NOT NULL DEFAULT text2ltree((currval('congress_id_seq'::regclass))::text)

Tables referencing this one via Foreign Key Constraints:

congress__billnumber billnumber congress__congress_id parent_id congress__congtype_id congtype_id congress__parent_id parent_id congress__release_id release_id congress__state_id state_id

Index - Schema public


Table: congstage

congstage Structure
F-Key Name Type Description
congstage_id smallint PRIMARY KEY DEFAULT nextval(('congstage_id_seq'::text)::regclass)
name character varying NOT NULL
rank smallint NOT NULL
voting boolean NOT NULL DEFAULT false

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congstatus

congstatus Structure
F-Key Name Type Description
congstatus_id serial PRIMARY KEY
congress.congress_id congress_id integer NOT NULL
conglevel.conglevel_id conglevel_id character(1) NOT NULL
congstage.congstage_id congstage_id smallint NOT NULL
congoutcome.congoutcome_id congoutcome_id smallint
congofficialtitle.congofficialtitle_id congofficialtitle_id integer
congtitle.congtitle_id congtitle_id integer
conghighlight.conghighlight_id conghighlight_id integer
congsynopsis.congsynopsis_id congsynopsis_id integer
congcategory.congcategory_id congcategory_id integer
congofficialsynopsis.congofficialsynopsis_id congofficialsynopsis_id integer
congtext.congtext_id congtext_id integer
release_id smallint NOT NULL
rank smallint
statusdate date NOT NULL
rollnumber smallint
yea smallint
nay smallint
voicevote boolean NOT NULL DEFAULT false
keyvote boolean NOT NULL DEFAULT false
created timestamp without time zone
modified timestamp without time zone
congdocgroup.congdocgroup_id congdocgroup_id integer

Tables referencing this one via Foreign Key Constraints:

congstatus__congcategory_id congcategory_id congstatus__conghighlight_id conghighlight_id congstatus__conglevel_id conglevel_id congstatus__congofficialsynopsis_id congofficialsynopsis_id congstatus__congofficialtitle_id congofficialtitle_id congstatus__congoutcome_id congoutcome_id congstatus__congress_id congress_id congstatus__congstage_id congstage_id congstatus__congsynopsis_id congsynopsis_id congstatus__congtext_id congtext_id congstatus__congtitle_id congtitle_id congstatus__release_id release_id congstatus__rollnumber rollnumber congstatus__statusdate statusdate congstatus__voicevote voicevote csc_year date_part('year'::text, statusdate)

Index - Schema public


Table: congstatus_candidate

congstatus_candidate Structure
F-Key Name Type Description
congstatus_candidate_id serial PRIMARY KEY
congstatus.congstatus_id congstatus_id integer NOT NULL
office_candidate.office_candidate_id office_candidate_id integer NOT NULL
congaction.congaction_id congaction_id character(1) NOT NULL
congstatus_candidate__congaction_id congaction_id congstatus_candidate__congstatus_id congstatus_id congstatus_candidate__office_candidate_id office_candidate_id

Index - Schema public


Table: congstatus_committee

congstatus_committee Structure
F-Key Name Type Description
congstatus_committee_id serial PRIMARY KEY
congstatus.congstatus_id congstatus_id integer NOT NULL
committee.committee_id committee_id integer NOT NULL
congaction.congaction_id congaction_id character(1)
congstatus_committee__committee_id committee_id congstatus_committee__congstatus_id congstatus_id

Index - Schema public


Table: congstatus_tag

congstatus_tag Structure
F-Key Name Type Description
congstatus_tag_id serial PRIMARY KEY
congstatus.congstatus_id congstatus_id integer
tag.tag_id tag_id integer

Index - Schema public


Table: congstatus_vetotext

congstatus_vetotext Structure
F-Key Name Type Description
congstatus_vetotext_id serial PRIMARY KEY
congstatus.congstatus_id congstatus_id integer NOT NULL
congvetotext.congvetotext_id congvetotext_id integer NOT NULL

Index - Schema public


Table: congsynopsis

congsynopsis Structure
F-Key Name Type Description
congsynopsis_id serial PRIMARY KEY
synopsis text NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congtext

congtext Structure
F-Key Name Type Description
congtext_id serial PRIMARY KEY
congtext text
path character varying
name text

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congtitle

congtitle Structure
F-Key Name Type Description
congtitle_id serial PRIMARY KEY
title character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

congtitle__title title

Index - Schema public


Table: congtools

congtools Structure
F-Key Name Type Description
congtools_id serial PRIMARY KEY
congtype.congtype_id congtype_id character(1) NOT NULL
conglevel.conglevel_id conglevel_id character(1) NOT NULL
congstage.congstage_id congstage_id smallint NOT NULL
congoutcome.congoutcome_id congoutcome_id smallint NOT NULL
congoutcometext.congoutcometext_id congoutcometext_id smallint NOT NULL
rank smallint
congtools__congoutcometext_id congoutcometext_id

Index - Schema public


Table: congtype

congtype Structure
F-Key Name Type Description
congtype_id character(1) PRIMARY KEY
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: congvetotext

congvetotext Structure
F-Key Name Type Description
congvetotext_id serial PRIMARY KEY
path character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: contact_candidate

contact_candidate Structure
F-Key Name Type Description
contact_candidate_id serial PRIMARY KEY
candidate.candidate_id candidate_id integer NOT NULL
election_candidate.election_candidate_id election_candidate_id integer
contacttype.contacttype_id contacttype_id smallint NOT NULL
contactmode.contactmode_id contactmode_id smallint NOT NULL
contactoutcome.contactoutcome_id contactoutcome_id smallint NOT NULL
username character varying NOT NULL DEFAULT (-1)
date timestamp with time zone NOT NULL DEFAULT now()
contactstring character varying NOT NULL DEFAULT ''::character varying
initiated boolean NOT NULL DEFAULT true
notable boolean NOT NULL DEFAULT false
title character varying NOT NULL DEFAULT ''::character varying
name character varying NOT NULL DEFAULT ''::character varying
note text NOT NULL DEFAULT ''::text
message text NOT NULL DEFAULT ''::character varying
contact_candidate__candidate_id candidate_id contact_candidate__contacttype_id contacttype_id contact_candidate__election_candidate_id election_candidate_id contact_candidate__mode_id contactmode_id contact_candidate__outcome_id contactoutcome_id contact_candidate_date date

Index - Schema public


Table: contactmode

contactmode Structure
F-Key Name Type Description
contactmode_id smallint PRIMARY KEY DEFAULT nextval(('contactmode_id_seq'::text)::regclass)
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: contactoutcome

contactoutcome Structure
F-Key Name Type Description
contactoutcome_id smallint PRIMARY KEY DEFAULT nextval(('contactoutcome_id_seq'::text)::regclass)
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: contacttype

contacttype Structure
F-Key Name Type Description
contacttype_id smallint PRIMARY KEY DEFAULT nextval(('contacttype_id_seq'::text)::regclass)
name character varying NOT NULL
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: county

county Structure
F-Key Name Type Description
county_id smallint NOT NULL
name character varying NOT NULL
statecode smallint NOT NULL
local_id integer
county__id county_id

Index - Schema public


Table: ctystate

ctystate Structure
F-Key Name Type Description
ctystate_id serial PRIMARY KEY
zip5 integer NOT NULL
city_state_key character varying NOT NULL
city_name character varying NOT NULL
city_abbr character varying
preferred_key character varying
preferred_name character varying
state_id character varying NOT NULL
county_no integer
county_name character varying
ctystate__city_name city_name ctystate__county_name county_name ctystate__state_id state_id ctystate__zip5 zip5

Index - Schema public


Table: degree

degree Structure
F-Key Name Type Description
degree_id serial PRIMARY KEY
name text
rank smallint

Index - Schema public


Table: district

district Structure
F-Key Name Type Description
district_id serial PRIMARY KEY
zip2districtcode smallint
state.state_id state_id character(2) NOT NULL
office.office_id office_id smallint NOT NULL
districtname.districtname_id districtname_id smallint NOT NULL
zip2redistrictcode smallint
district__districtname_id districtname_id district__office_id office_id district__state_id state_id district__zip2district_id zip2districtcode

Index - Schema public


Table: districtname

districtname Structure
F-Key Name Type Description
districtname_id smallint PRIMARY KEY DEFAULT nextval('districtname_id_seq'::regclass)
name character varying NOT NULL
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: districttype

districttype Structure
F-Key Name Type Description
districttype_id character(1) PRIMARY KEY
name character varying NOT NULL

Index - Schema public


Table: django_admin_log

django_admin_log Structure
F-Key Name Type Description
id serial PRIMARY KEY
action_time timestamp with time zone NOT NULL
object_id text
object_repr character varying(200) NOT NULL
action_flag smallint NOT NULL
change_message text NOT NULL
django_content_type.id content_type_id integer
auth_user.id user_id integer NOT NULL

 

django_admin_log Constraints
Name Constraint
django_admin_log_action_flag_check CHECK ((action_flag >= 0))
django_admin_log_417f1b1c content_type_id django_admin_log_e8701ad4 user_id

Index - Schema public


Table: django_content_type

django_content_type Structure
F-Key Name Type Description
id serial PRIMARY KEY
app_label character varying(100) UNIQUE#1 NOT NULL
model character varying(100) UNIQUE#1 NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: django_migrations

django_migrations Structure
F-Key Name Type Description
id serial PRIMARY KEY
app character varying(255) NOT NULL
name character varying(255) NOT NULL
applied timestamp with time zone NOT NULL

Index - Schema public


Table: django_session

django_session Structure
F-Key Name Type Description
session_key character varying(40) PRIMARY KEY
session_data text NOT NULL
expire_date timestamp with time zone NOT NULL
django_session_de54fa62 expire_date django_session_session_key_2cd4887a1e06b841_like session_key varchar_pattern_ops

Index - Schema public


Table: education

education Structure
F-Key Name Type Description
education_id serial PRIMARY KEY
candidate.candidate_id candidate_id integer NOT NULL
degree text
field text
school text
span text
graduated boolean
gpa numeric(2,1)
fulltext text

Tables referencing this one via Foreign Key Constraints:

education__candidate_id candidate_id

Index - Schema public


Table: education_category

education_category Structure
F-Key Name Type Description
education_category_id serial PRIMARY KEY
education.education_id education_id integer
category.category_id category_id integer
education_category__cat category_id

Index - Schema public


Table: education_tag

education_tag Structure
F-Key Name Type Description
education_tag_id serial PRIMARY KEY
education.education_id education_id integer
tag.tag_id tag_id integer
education_tag__tag tag_id

Index - Schema public


Table: election

election Structure
F-Key Name Type Description
election_id serial PRIMARY KEY
state.state_id state_id character(2) NOT NULL
officetype_id character(1) NOT NULL
special boolean NOT NULL DEFAULT false
electionyear smallint NOT NULL
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

election__electionyear electionyear election__officetype_id officetype_id election__state_id state_id

Index - Schema public


Table: election_address

election_address Structure
F-Key Name Type Description
election_address_id serial PRIMARY KEY
election_candidate.election_candidate_id election_candidate_id integer NOT NULL
addresstype.addresstype_id addresstype_id smallint NOT NULL
phone1 character varying
phone2 character varying
fax1 character varying
fax2 character varying
address character varying
city character varying
state.state_id state character(2)
zip character varying
tollfree character varying
ttyd character varying
contactname character varying
contacttitle character varying
npataddress boolean
note text
rank smallint
election_address__addresstype_id addresstype_id election_address__election_candidate_id election_candidate_id

Index - Schema public


Table: election_candidate

election_candidate Structure
F-Key Name Type Description
election_candidate_id serial PRIMARY KEY
election.election_id election_id integer NOT NULL
candidate.candidate_id candidate_id integer NOT NULL
office.office_id office_id smallint NOT NULL
state.state_id state_id character(2) NOT NULL
districtname.districtname_id districtname_id smallint
parent_id integer
major boolean
ballotname character varying
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

election_candidate__candidate_id candidate_id election_candidate__districtname_id districtname_id election_candidate__election_id election_id election_candidate__major major election_candidate__office_id office_id election_candidate__parent_id parent_id election_candidate__state_id state_id

Index - Schema public


Table: election_districtname

election_districtname Structure
F-Key Name Type Description
election_districtname_id serial PRIMARY KEY
election.election_id election_id integer NOT NULL
districtname.districtname_id districtname_id smallint NOT NULL
state.state_id state_id character(2) NOT NULL

Index - Schema public


Table: election_electionstage

election_electionstage Structure
F-Key Name Type Description
election_electionstage_id serial PRIMARY KEY
election.election_id election_id integer NOT NULL
electionstage_id character(1) NOT NULL
state.state_id state_id character(2) NOT NULL
release.release_id release_id smallint
release.release_id candidaterelease_id smallint
release.release_id npatrelease_id smallint
release.release_id resultrelease_id smallint
electiondate date
filingdeadline date
npatmailed boolean NOT NULL DEFAULT false
majorfiling date
independentfiling date
thirdfiling date
writeinfiling date
party_id integer
tentative boolean
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

election_electiondstage__electionyear date_part('year'::text, electiondate) election_electionstage__candidaterelease_id candidaterelease_id election_electionstage__election_id election_id election_electionstage__electiondate electiondate election_electionstage__electionstage_id electionstage_id election_electionstage__npatrelease_id npatrelease_id election_electionstage__release_id release_id election_electionstage__resultrelease_id resultrelease_id election_electionstage__state_id state_id

Index - Schema public


Table: election_webaddress

election_webaddress Structure
F-Key Name Type Description
election_webaddress_id serial PRIMARY KEY
election_candidate.election_candidate_id election_candidate_id integer
webaddresstype.webaddresstype_id webaddresstype_id smallint NOT NULL
addresstype.addresstype_id addresstype_id smallint NOT NULL
webaddress character varying
election_webaddress__addresstype_id addresstype_id election_webaddress__ec_id election_candidate_id election_webaddress__webaddresstype_id webaddresstype_id

Index - Schema public


Table: electioncandidatestatus

electioncandidatestatus Structure
F-Key Name Type Description
electioncandidatestatus_id smallint PRIMARY KEY DEFAULT nextval(('electioncandidatestatus_id_seq'::text)::regclass)
name character varying NOT NULL DEFAULT ''::text
display boolean

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: electionoffice

electionoffice Structure
F-Key Name Type Description
electionoffice_id serial PRIMARY KEY
state_id character(2) NOT NULL
name character varying
address character varying
city character varying
state character(2) NOT NULL
zip character varying
phone1 character varying
phone2 character varying
fax character varying
tdd character varying
hours character varying
email character varying
website character varying
electionoffice__state_id state_id

Index - Schema public


Table: electionstage

electionstage Structure
F-Key Name Type Description
electionstage_id character(1) PRIMARY KEY
name character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: electionstage_candidate

electionstage_candidate Structure
F-Key Name Type Description
electionstage_candidate_id serial PRIMARY KEY
election_electionstage.election_electionstage_id election_electionstage_id integer NOT NULL
election_candidate.election_candidate_id election_candidate_id integer NOT NULL
electioncandidatestatus.electioncandidatestatus_id electioncandidatestatus_id smallint NOT NULL
votecount integer
votepercent numeric(16,4)
delegate smallint
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

electionstage_candidate__election_candidate_id election_candidate_id electionstage_candidate__election_electionstage_id election_electionstage_id electionstage_candidate__electioncandidatestatus_id electioncandidatestatus_id

Index - Schema public


Table: electionstage_candidate_party

electionstage_candidate_party Structure
F-Key Name Type Description
electionstage_candidate_party_id serial PRIMARY KEY
electionstage_candidate.electionstage_candidate_id electionstage_candidate_id integer NOT NULL
party.party_id party_id integer NOT NULL
elecitonstage_candidate_party__electionstage_candidate_id electionstage_candidate_id electionstage_candidate_party__party_id party_id

Index - Schema public


Table: endorse

endorse Structure
F-Key Name Type Description
endorse_id serial PRIMARY KEY
sig.sig_id sig_id integer NOT NULL
election.election_id election_id integer NOT NULL
release.release_id release_id smallint NOT NULL
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: endorse_candidate

endorse_candidate Structure
F-Key Name Type Description
endorse_candidate_id serial PRIMARY KEY
endorse.endorse_id endorse_id integer NOT NULL
election_candidate.election_candidate_id election_candidate_id integer
endorse_candidate__election_candidate_id election_candidate_id endorse_candidate__endorse_id endorse_id

Index - Schema public


Table: endorser

endorser Structure
F-Key Name Type Description
endorser_id serial PRIMARY KEY
party.party_id party_id integer
name character varying
profession character varying
state.state_id state_id character(2)
endorsertype.endorsertype_id endorsertype_id character(1)

Tables referencing this one via Foreign Key Constraints:

endorser__endorsetype_id endorsertype_id endorser__name_id name endorser__party_id party_id endorser__state_id state_id

Index - Schema public


Table: endorser_candidate

endorser_candidate Structure
F-Key Name Type Description
endorser_candidate_id serial PRIMARY KEY
endorser.endorser_id endorser_id integer NOT NULL
election_candidate.election_candidate_id election_candidate_id integer NOT NULL
endorser_candidate__election_candidate_id election_candidate_id endorser_candidate__endorser_id endorser_id

Index - Schema public


Table: endorsergroup

endorsergroup Structure
F-Key Name Type Description
endorsergroup_id serial PRIMARY KEY
state.state_id state_id character(2)
endorsertype.endorsertype_id endorsertype_id character(1)
name character varying

Tables referencing this one via Foreign Key Constraints:

endorsergroup__endorsetype_id endorsertype_id endorsergroup__name name endorsergroup__state_id state_id

Index - Schema public


Table: endorsergroup_candidate

endorsergroup_candidate Structure
F-Key Name Type Description
endorsergroup_candidate_id serial PRIMARY KEY
endorsergroup.endorsergroup_id endorsergroup_id integer NOT NULL
election_candidate.election_candidate_id election_candidate_id integer NOT NULL
endorsergroup_candidate__election_candidate_id election_candidate_id endorsergroup_candidate__endorsergroup_id endorsergroup_id

Index - Schema public


Table: endorsertype

endorsertype Structure
F-Key Name Type Description
endorsertype_id character(1) PRIMARY KEY
name character varying UNIQUE

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: etl_file

etl_file Structure
F-Key Name Type Description
etl_file_id serial PRIMARY KEY
etl_job.etl_job_id etl_job_id integer
file_system_path character varying
original_name character varying
name character varying
errors text
created timestamp without time zone DEFAULT now()

Index - Schema public


Table: etl_job

etl_job Structure
F-Key Name Type Description
etl_job_id serial PRIMARY KEY
etl_status.etl_status_id etl_status_id smallint
etl_type.etl_type_id etl_type_id integer
started timestamp without time zone
completed timestamp without time zone
errors text
created timestamp without time zone DEFAULT now()

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: etl_sigratings_files

etl_sigratings_files Structure
F-Key Name Type Description
etl_sigratings_files_id serial PRIMARY KEY
etl_sigratings_harvest_jobs.etl_sigratings_harvest_jobs_id etl_sigratings_harvest_jobs_id integer
file_system_path character varying
original_name character varying
name character varying
created_datetime timestamp without time zone DEFAULT now()

Index - Schema public


Table: etl_sigratings_harvest_jobs

etl_sigratings_harvest_jobs Structure
F-Key Name Type Description
etl_sigratings_harvest_jobs_id serial PRIMARY KEY
etl_status.etl_status_id etl_status_id integer
started_datetime timestamp without time zone
completed_datetime timestamp without time zone
errors character varying
created_datetime timestamp without time zone DEFAULT now()

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: etl_status

etl_status Structure
F-Key Name Type Description
etl_status_id serial PRIMARY KEY
name character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: etl_type

etl_type Structure
F-Key Name Type Description
etl_type_id serial PRIMARY KEY
name character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: experience

experience Structure
F-Key Name Type Description
experience_id serial PRIMARY KEY
candidate.candidate_id candidate_id integer NOT NULL
experiencetype.experiencetype_id experiencetype_id character(1) NOT NULL
title text
organization text
span text
district text
special text
fulltext text

Tables referencing this one via Foreign Key Constraints:

experience__candidate_id candidate_id experience__experiencetype_id experiencetype_id

Index - Schema public


Table: experience_category

experience_category Structure
F-Key Name Type Description
experience_category_id serial PRIMARY KEY
experience.experience_id experience_id integer NOT NULL
category.category_id category_id smallint NOT NULL
experience_category__cat category_id

Index - Schema public


Table: experience_tag

experience_tag Structure
F-Key Name Type Description
experience_tag_id serial PRIMARY KEY
experience.experience_id experience_id integer
tag.tag_id tag_id integer
experience_tag__tag tag_id

Index - Schema public


Table: experiencetype

experiencetype Structure
F-Key Name Type Description
experiencetype_id character(1) PRIMARY KEY
name text NOT NULL
rank smallint
shortname text

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: factcheck

factcheck Structure
F-Key Name Type Description
factcheck_id serial PRIMARY KEY
factchecker.factchecker_id factchecker_id integer NOT NULL
url text
ruling text

Tables referencing this one via Foreign Key Constraints:

factcheck_factchecker_id factchecker_id

Index - Schema public


Table: factcheck_candidate

factcheck_candidate Structure
F-Key Name Type Description
factcheck_candidate_id serial PRIMARY KEY
factcheck.factcheck_id factcheck_id integer
candidate.candidate_id candidate_id integer

Index - Schema public


Table: factcheck_category

factcheck_category Structure
F-Key Name Type Description
factcheck_category_id serial PRIMARY KEY
factcheck.factcheck_id factcheck_id integer
category.category_id category_id integer

Index - Schema public


Table: factcheck_speech

factcheck_speech Structure
F-Key Name Type Description
factcheck_speech_id serial PRIMARY KEY
factcheck.factcheck_id factcheck_id integer
speech.speech_id speech_id integer
factcheckruling.factcheckruling_id factcheckruling_id integer

Index - Schema public


Table: factcheck_speech_candidate

factcheck_speech_candidate Structure
F-Key Name Type Description
factcheck_speech_candidate_id serial PRIMARY KEY
factcheck.factcheck_id factcheck_id integer
speech_candidate.speech_candidate_id speech_candidate_id integer
factcheckruling.factcheckruling_id factcheckruling_id integer
factcheck_speech_candidate_factcheck_id factcheck_id factcheck_speech_candidate_factcheckruling_id factcheckruling_id factcheck_speech_candidate_speech_candidate_id speech_candidate_id

Index - Schema public


Table: factcheck_tag

factcheck_tag Structure
F-Key Name Type Description
factcheck_tag_id serial PRIMARY KEY
factcheck.factcheck_id factcheck_id integer
tag.tag_id tag_id integer
factcheck_tag__factcheck_id factcheck_id factcheck_tag__tag_id tag_id

Index - Schema public


Table: factchecker

factchecker Structure
F-Key Name Type Description
factchecker_id serial PRIMARY KEY
name text UNIQUE NOT NULL
url text UNIQUE NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: factcheckruling

factcheckruling Structure
F-Key Name Type Description
factcheckruling_id serial PRIMARY KEY
name text

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: featured

featured Structure
F-Key Name Type Description
featured_id serial PRIMARY KEY
title character varying
description text
photos json
release_id smallint NOT NULL

Index - Schema public


Table: featured_tag

featured_tag Structure
F-Key Name Type Description
featured_tag_id serial PRIMARY KEY
featured_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL

Index - Schema public


Table: finance_candidate

finance_candidate Structure
F-Key Name Type Description
finance_candidate_id serial PRIMARY KEY
election_candidate.election_candidate_id election_candidate_id integer NOT NULL
finance_catcode.finance_catcode_id finance_catcode_id smallint NOT NULL
date timestamp without time zone
dollars bigint
finsource_id smallint NOT NULL
finance_candidate__election_candidate_id election_candidate_id finance_candidate__finance_catcode_id finance_catcode_id

Index - Schema public


Table: finance_catcode

finance_catcode Structure
F-Key Name Type Description
finance_catcode_id serial PRIMARY KEY
finsource_id smallint
catcode character varying
name character varying
industry character varying
sector character varying
crp_indcode character varying
imsp_industry_code smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: finsource

finsource Structure
F-Key Name Type Description
finsource_id serial PRIMARY KEY
name character varying NOT NULL
url text

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: finsource_candidate

finsource_candidate Structure
F-Key Name Type Description
finsource_candidate_id serial PRIMARY KEY
finsource.finsource_id finsource_id integer NOT NULL
candidate.candidate_id candidate_id integer NOT NULL
code character varying NOT NULL
created timestamp without time zone
modified timestamp without time zone
updated timestamp without time zone
finsource_candidate__candidate_id candidate_id finsource_candidate__finsource_id finsource_id

Index - Schema public


View: geography_columns

geography_columns Structure
F-Key Name Type Description
f_table_catalog name
f_table_schema name
f_table_name name
f_geography_column name
coord_dimension integer
srid integer
type text
SELECT current_database
() AS f_table_catalog
,
    n.nspname AS f_table_schema
,
    c.relname AS f_table_name
,
    a.attname AS f_geography_column
,
    postgis_typmod_dims
(a.atttypmod) AS coord_dimension
,
    postgis_typmod_srid
(a.atttypmod) AS srid
,
    postgis_typmod_type
(a.atttypmod) AS type
   
FROM pg_class c
,
    pg_attribute a
,
    pg_type t
,
    pg_namespace n
  
WHERE (
     (
           (
                 (
                       (
                             (
                                   (t.typname = 'geography'::name)
                                 AND (a.attisdropped = false)
                             )
                           AND (a.atttypid = t.oid)
                       )
                     AND (a.attrelid = c.oid)
                 )
               AND (c.relnamespace = n.oid)
           )
         AND (NOT pg_is_other_temp_schema
                 (c.relnamespace)
           )
     )
   AND has_table_privilege
     (c.oid
           ,'SELECT'::text
     )
);

Index - Schema public


View: geometry_columns

geometry_columns Structure
F-Key Name Type Description
f_table_catalog character varying(256)
f_table_schema character varying(256)
f_table_name character varying(256)
f_geometry_column character varying(256)
coord_dimension integer
srid integer
type character varying(30)
SELECT (current_database
     ()
)::character varying
(256) AS f_table_catalog
,
    
(n.nspname)::character varying
(256) AS f_table_schema
,
    
(c.relname)::character varying
(256) AS f_table_name
,
    
(a.attname)::character varying
(256) AS f_geometry_column
,
    COALESCE
(postgis_typmod_dims
     (a.atttypmod)
     , sn.ndims
     , 2
) AS coord_dimension
,
    COALESCE
(NULLIF
     (postgis_typmod_srid
           (a.atttypmod)
           , 0
     )
     , sr.srid
     , 0
) AS srid
,
    
(replace
     (replace
           (COALESCE
                 (NULLIF
                       (upper
                             (postgis_typmod_type
                                   (a.atttypmod)
                             )
                             ,'GEOMETRY'::text
                       )
                       , st.type
                       ,'GEOMETRY'::text
                 )
                 ,'ZM'::text
                 ,''::text
           )
           ,'Z'::text
           ,''::text
     )
)::character varying
(30) AS type
   
FROM (
     (
           (
                 (
                       (
                             (pg_class c
     
                                JOIN pg_attribute a 
                                  ON (
                                         (
                                               (a.attrelid = c.oid)
                                             AND (NOT a.attisdropped)
                                         )
                                   )
                             )
     
                          JOIN pg_namespace n 
                            ON (
                                   (c.relnamespace = n.oid)
                             )
                       )
     
                    JOIN pg_type t 
                      ON (
                             (a.atttypid = t.oid)
                       )
                 )
     
         LEFT JOIN (
                  SELECT s.connamespace
                       ,
            s.conrelid
                       ,
            s.conkey
                       ,
            replace
                       (split_part
                             (s.consrc
                                   ,''''::text
                                   , 2
                             )
                             ,')'::text
                       ,''::text
                 ) AS type
           
              FROM pg_constraint s
          
             WHERE (s.consrc ~~* 
   '%geometrytype(% = %'::text)
                 ) st 
                ON (
                       (
                             (
                                   (st.connamespace = n.oid)
                                 AND (st.conrelid = c.oid)
                             )
                           AND (a.attnum = ANY 
                                   (st.conkey)
                             )
                       )
                 )
           )
     
   LEFT JOIN (
            SELECT s.connamespace
                 ,
            s.conrelid
                 ,
            s.conkey
                 ,
            
                 (replace
                       (split_part
                             (s.consrc
                                   ,' = '::text
                                   , 2
                             )
                             ,')'::text
                       ,''::text
                 )
           )::integer AS ndims
           
        FROM pg_constraint s
          
       WHERE (s.consrc ~~* 
    '%ndims(% = %'::text)
           ) sn 
          ON (
                 (
                       (
                             (sn.connamespace = n.oid)
                           AND (sn.conrelid = c.oid)
                       )
                     AND (a.attnum = ANY 
                             (sn.conkey)
                       )
                 )
           )
     )
     
LEFT JOIN (
      SELECT s.connamespace
           ,
            s.conrelid
           ,
            s.conkey
           ,
            
           (replace
                 (replace
                       (split_part
                             (s.consrc
                                   ,' = '::text
                                   , 2
                             )
                             ,')'::text
                       ,''::text
                 )
                 , '('::text
                       ,''::text
                 )
           )::integer AS srid
           
        FROM pg_constraint s
          
       WHERE (s.consrc ~~* 
     '%srid(% = %'::text)
           ) sr 
          ON (
                 (
                       (
                             (sr.connamespace = n.oid)
                           AND (sr.conrelid = c.oid)
                       )
                     AND (a.attnum = ANY 
                             (sr.conkey)
                       )
                 )
           )
     )
  
 WHERE (
           (
                 (
                       (
                             (c.relkind = ANY 
                                   (ARRAY['r'::"char"
                                         ,'v'::"char"
                                         ,'m'::"char"
                                         ,'f'::"char"]
                                   )
                             )
                           AND (NOT 
                                   (c.relname = 'raster_columns'::name)
                             )
                       )
                     AND (t.typname = 'geometry'::name)
                 )
               AND (NOT pg_is_other_temp_schema
                       (c.relnamespace)
                 )
           )
         AND has_table_privilege
           (c.oid
                 ,'SELECT'::text
           )
     );

Index - Schema public


Table: leadership

leadership Structure
F-Key Name Type Description
leadership_id smallint PRIMARY KEY DEFAULT nextval(('leadership_id_seq'::text)::regclass)
name character varying NOT NULL DEFAULT ''::character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

leadership__rank rank

Index - Schema public


Table: leadership_candidate

leadership_candidate Structure
F-Key Name Type Description
leadership_candidate_id serial PRIMARY KEY
leadership.leadership_id leadership_id smallint NOT NULL
office_candidate.office_candidate_id office_candidate_id integer NOT NULL
termstart flexdate
termend flexdate
created timestamp without time zone
modified timestamp without time zone
leadership_candidate__leadership_id leadership_id leadership_candidate__office_candidate_id office_candidate_id

Index - Schema public


Table: leadership_office

leadership_office Structure
F-Key Name Type Description
leadership_office_id serial PRIMARY KEY
leadership.leadership_id leadership_id smallint NOT NULL
state.state_id state_id character(2) NOT NULL
office.office_id office_id smallint

Index - Schema public


Table: leadership_state

leadership_state Structure
F-Key Name Type Description
leadership_state_id smallint PRIMARY KEY DEFAULT nextval('leadership_state_id_seq'::regclass)
leadership.leadership_id leadership_id smallint NOT NULL
state.state_id state_id character(2) NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: leadership_state_office

leadership_state_office Structure
F-Key Name Type Description
leadership_state_office_id serial PRIMARY KEY
leadership_state.leadership_state_id leadership_state_id smallint NOT NULL
office.office_id office_id smallint NOT NULL

Index - Schema public


Table: legislativedistricts_gis

legislativedistricts_gis Structure
F-Key Name Type Description
affgeoid character varying
districtname_id integer
state_id character varying
office_id integer
name character varying
geom geometry(Geometry,4326)

Index - Schema public


Table: local

local Structure
F-Key Name Type Description
local_id serial PRIMARY KEY
state.state_id state_id character(2) NOT NULL
localtype.localtype_id localtype_id character(1) NOT NULL
name character varying NOT NULL
url character varying
parent_id integer
voteurl character varying
committeeurl character varying
financeurl character varying

Tables referencing this one via Foreign Key Constraints:

local__localtype_id localtype_id local__parent_id parent_id local__state_id state_id

Index - Schema public


Table: local_districtname

local_districtname Structure
F-Key Name Type Description
local_districtname_id serial PRIMARY KEY
local.local_id local_id integer
districtname.districtname_id districtname_id smallint
local_districtname__districtname_id districtname_id

Index - Schema public


Table: local_leadership

local_leadership Structure
F-Key Name Type Description
local_leadership_id serial PRIMARY KEY
local_id integer
leadership.leadership_id leadership_id smallint

Index - Schema public


Table: localtype

localtype Structure
F-Key Name Type Description
localtype_id character(1) PRIMARY KEY
name character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: mailmerge

mailmerge Structure
F-Key Name Type Description
mailmerge_id serial
candidate_id integer
election_candidate_id integer
npataddress boolean
deadline date
password text
title text
seekingtitle text
districtname text
firstname text
middlename text
lastname text
suffix text
address text
city text
state text
zip text
contacttitle text
contactname text
status text
email text
mergedate timestamp without time zone NOT NULL DEFAULT now()
mailmerge__mailmerge_id mailmerge_id mailmerge__mergedate mergedate

Index - Schema public


Table: measure

measure Structure
F-Key Name Type Description
measure_id serial PRIMARY KEY
electiontype character varying
electiondate date
state_id character(2)
code character varying
title character varying
url character varying
measuretext text
texturl character varying
summary text
summaryurl character varying
prourl character varying
conurl character varying
outcome character varying
source character varying
yes integer
no integer
measuretype_id character(1)
congoutcome.congoutcome_id congoutcome_id smallint
sourceurl character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: measure_category

measure_category Structure
F-Key Name Type Description
measure_category_id serial PRIMARY KEY
measure.measure_id measure_id integer NOT NULL
category.category_id category_id smallint NOT NULL
measure_category__category_id category_id measure_category__measure_id measure_id

Index - Schema public


Table: measure_tag

measure_tag Structure
F-Key Name Type Description
measure_tag_id serial PRIMARY KEY
measure.measure_id measure_id integer
tag.tag_id tag_id integer

Index - Schema public


Table: measuretype

measuretype Structure
F-Key Name Type Description
measuretype_id character(1) PRIMARY KEY
name character varying

Index - Schema public


Table: merge_candidate

merge_candidate Structure
F-Key Name Type Description
old_id integer
new_id integer
merged timestamp without time zone NOT NULL DEFAULT now()

Index - Schema public


Table: mv_rating_party_average

mv_rating_party_average Structure
F-Key Name Type Description
sig_id integer
party_group text
average integer
sig_name character varying

Index - Schema public


Table: npatanswer

npatanswer Structure
F-Key Name Type Description
npatanswer_id serial PRIMARY KEY
npatmatrix.npatmatrix_id npatmatrix_id integer NOT NULL
npatcandidate.npatcandidate_id npatcandidate_id integer NOT NULL
npatoption.npatoption_id npatoption_id integer
answertext text NOT NULL DEFAULT ''::text
npatoption.npatoption_id our_npatoption_id integer
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

npatanswer__npatcandidate_id npatcandidate_id npatanswer__npatmatrix_id npatmatrix_id npatanswer__npatoption_id npatoption_id npatanswer__our_npatoption_id our_npatoption_id

Index - Schema public


Table: npatanswer_backup

npatanswer_backup Structure
F-Key Name Type Description
npatanswer_id integer
npatmatrix_id integer
npatcandidate_id integer
npatoption_id integer
answertext text
our_npatoption_id integer

Index - Schema public


Table: npatanswer_category

npatanswer_category Structure
F-Key Name Type Description
npatanswer_category_id serial PRIMARY KEY
npatanswer.npatanswer_id npatanswer_id integer NOT NULL
category.category_id category_id smallint NOT NULL
npatanswer_category__category_id category_id

Index - Schema public


Table: npatanswer_citation_congstatus

npatanswer_citation_congstatus Structure
F-Key Name Type Description
citation_id integer
congstatus_id integer

Index - Schema public


Table: npatanswer_citation_rating

npatanswer_citation_rating Structure
F-Key Name Type Description
citation_id integer
rating_id integer

Index - Schema public


Table: npatanswer_citation_speech_candidate

npatanswer_citation_speech_candidate Structure
F-Key Name Type Description
citation_id integer
speech_candidate_id integer

Index - Schema public


Table: npatanswer_pct_old

npatanswer_pct_old Structure
F-Key Name Type Description
npatcandidate_id integer
npatoption_id integer
npatmatrix_id integer

Index - Schema public


Table: npatanswer_tag

npatanswer_tag Structure
F-Key Name Type Description
npatanswer_tag_id serial PRIMARY KEY
npatanswer.npatanswer_id npatanswer_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL

Index - Schema public


Table: npatanswerlocking

npatanswerlocking Structure
F-Key Name Type Description
npatanswer.npatanswer_id npatanswer_id integer NOT NULL
rank integer
committed boolean NOT NULL DEFAULT false
accessedby character varying
accessed timestamp without time zone
npatanswerlocking__rank rank

Index - Schema public


Table: npatcandidate

npatcandidate Structure
F-Key Name Type Description
npatcandidate_id serial PRIMARY KEY
election_candidate.election_candidate_id election_candidate_id integer NOT NULL
npatform.npatform_id npatform_id integer NOT NULL
npatgroup.npatgroup_id npatgroup_id character varying
receiveddate timestamp with time zone
lastupdate timestamp without time zone
lastimport timestamp without time zone
processed boolean
npatstatus.npatstatus_id npatstatus_id character(1) NOT NULL DEFAULT 'P'::bpchar
pct smallint
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

npatcandidate__election_candidate_id election_candidate_id npatcandidate__npatform_id npatform_id npatcandidate__npatgroup_id npatgroup_id npatcandidate__npatstatus_id npatstatus_id

Index - Schema public


Table: npatcitation

npatcitation Structure
F-Key Name Type Description
npatcitation_id serial PRIMARY KEY
npatcandidate.npatcandidate_id npatcandidate_id integer NOT NULL
npatrow.npatrow_id npatrow_id integer NOT NULL
citation text NOT NULL
url text

Tables referencing this one via Foreign Key Constraints:

npatcitation__npatcandidate_id npatcandidate_id npatcitation__npatrow_id npatrow_id

Index - Schema public


Table: npatcitation_congstatus

npatcitation_congstatus Structure
F-Key Name Type Description
npatcitation_congstatus_id serial PRIMARY KEY
npatcitation.npatcitation_id npatcitation_id integer NOT NULL
congstatus.congstatus_id congstatus_id integer NOT NULL
npatcitation_congstatus__congstatus_id congstatus_id npatcitation_congstatus__npatcitation_id npatcitation_id

Index - Schema public


Table: npatcitation_rating

npatcitation_rating Structure
F-Key Name Type Description
npatcitation_rating_id serial PRIMARY KEY
npatcitation.npatcitation_id npatcitation_id integer NOT NULL
rating_id integer NOT NULL
npatcitation_rating__npatcitation_id npatcitation_id npatcitation_rating__rating_id rating_id

Index - Schema public


Table: npatcitation_speech_candidate

npatcitation_speech_candidate Structure
F-Key Name Type Description
npatcitation_speech_candidate_id serial PRIMARY KEY
npatcitation.npatcitation_id npatcitation_id integer NOT NULL
speech_candidate_id integer NOT NULL
npatcitation_speech_candidate__npatcitation_id npatcitation_id npatcitation_speech_candidate__speech_candidate_id speech_candidate_id

Index - Schema public


Table: npatform

npatform Structure
F-Key Name Type Description
npatform_id serial PRIMARY KEY
deadline date

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatform_criteria

npatform_criteria Structure
F-Key Name Type Description
npatform_criteria_id serial PRIMARY KEY
npatform.npatform_id npatform.npatform_id npatform_id integer NOT NULL
state_id character(2) NOT NULL
electionstage_id character(1)
officetype_id character(1) NOT NULL
electionyear smallint NOT NULL

Index - Schema public


Table: npatform_def

npatform_def Structure
F-Key Name Type Description
npatform_def_id integer PRIMARY KEY
rowtype_id integer NOT NULL
rowtext text NOT NULL DEFAULT ''::text
path character varying NOT NULL DEFAULT ''::character varying
wordlimit smallint NOT NULL
profile boolean NOT NULL DEFAULT false

Index - Schema public


Table: npatform_election

npatform_election Structure
F-Key Name Type Description
npatform_election_id serial PRIMARY KEY
npatform.npatform_id npatform_id integer NOT NULL
election.election_id election_id integer NOT NULL
npatform_election__election_id election_id npatform_election__npatform_id npatform_id

Index - Schema public


Table: npatgroup

npatgroup Structure
F-Key Name Type Description
npatgroup_id character varying PRIMARY KEY
electionstage.electionstage_id electionstage_id character(1)
npatgrouptype.npatgrouptype_id npatgrouptype_id character(1)
code character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatgroup_state

npatgroup_state Structure
F-Key Name Type Description
npatgroup_state_id serial PRIMARY KEY
npatgroup.npatgroup_id npatgroup_id character varying NOT NULL
state.state_id state_id character(2) NOT NULL
maildate date
deadline date
releasedate date

Index - Schema public


Table: npatgrouptype

npatgrouptype Structure
F-Key Name Type Description
npatgrouptype_id character(1) PRIMARY KEY
name character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatmatrix

npatmatrix Structure
F-Key Name Type Description
npatmatrix_id serial PRIMARY KEY
npatform.npatform_id npatform_id integer NOT NULL
npatrow.npatrow_id npatrow_id integer NOT NULL
path ltree NOT NULL
rank smallint NOT NULL

Tables referencing this one via Foreign Key Constraints:

npatmatrix__npatform_id npatform_id npatmatrix__npatrow_id npatrow_id npatmatrix__path_gist path npatmatrix__rank rank

Index - Schema public


Table: npatmatrix_category

npatmatrix_category Structure
F-Key Name Type Description
npatmatrix_category_id serial PRIMARY KEY
npatmatrix.npatmatrix_id npatmatrix_id integer NOT NULL
category.category_id category_id smallint NOT NULL
npatmatrix_category__npatmatrix_id npatmatrix_id

Index - Schema public


Table: npatmatrix_p

npatmatrix_p Structure
F-Key Name Type Description
npatmatrix_id serial PRIMARY KEY
npatform_id integer NOT NULL
npatrow_id integer NOT NULL
path ltree NOT NULL
rank smallint NOT NULL
npatmatrix_p__npatform_id npatform_id npatmatrix_p__npatrow_id npatrow_id

Index - Schema public


Table: npatmessage

npatmessage Structure
F-Key Name Type Description
npatmessage_id serial PRIMARY KEY
npatmessagetype.npatmessagetype_id npatmessagetype_id character(1) NOT NULL
message text NOT NULL DEFAULT ''::text
electionyear smallint

Index - Schema public


Table: npatmessagetype

npatmessagetype Structure
F-Key Name Type Description
npatmessagetype_id character(1) PRIMARY KEY
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatoption

npatoption Structure
F-Key Name Type Description
npatoption_id serial PRIMARY KEY
npatoptiontext.npatoptiontext_id npatoptiontext_id integer NOT NULL
npatoptiongroup.npatoptiongroup_id npatoptiongroup_id integer NOT NULL
rank integer NOT NULL
code character(1)

Tables referencing this one via Foreign Key Constraints:

npatoption__npatoptiongroup_id npatoptiongroup_id npatoption__npatoptiontext_id npatoptiontext_id

Index - Schema public


Table: npatoptiongroup

npatoptiongroup Structure
F-Key Name Type Description
npatoptiongroup_id integer PRIMARY KEY

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatoptiontext

npatoptiontext Structure
F-Key Name Type Description
npatoptiontext_id serial PRIMARY KEY
optiontext character varying NOT NULL DEFAULT ''::character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatproblem

npatproblem Structure
F-Key Name Type Description
npatproblem_id character(1) PRIMARY KEY
problem text

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatproblem_npatcandidate

npatproblem_npatcandidate Structure
F-Key Name Type Description
npatproblem_npatcandidate_id serial PRIMARY KEY
npatproblem.npatproblem_id npatproblem_id character(1)
npatcandidate.npatcandidate_id npatcandidate_id integer

Index - Schema public


Table: npatrow

npatrow Structure
F-Key Name Type Description
npatrow_id serial PRIMARY KEY
npatrowtext.npatrowtext_id npatrowtext_id integer NOT NULL
npatrowtype.npatrowtype_id npatrowtype_id integer NOT NULL
wordlimit smallint
profile boolean

Tables referencing this one via Foreign Key Constraints:

npatrow_npatrowtext npatrowtext_id npatrow_npatrowtype npatrowtype_id

Index - Schema public


Table: npatrow_category

npatrow_category Structure
F-Key Name Type Description
npatrow_category_id serial PRIMARY KEY
npatrow.npatrow_id npatrow_id integer NOT NULL
category.category_id category_id smallint NOT NULL
rank smallint NOT NULL

Index - Schema public


Table: npatrow_congstatus

npatrow_congstatus Structure
F-Key Name Type Description
npatrow_congstatus_id serial PRIMARY KEY
npatrow.npatrow_id npatrow_id integer
congstatus.congstatus_id congstatus_id integer

Index - Schema public


Table: npatrow_p

npatrow_p Structure
F-Key Name Type Description
npatrow_id serial NOT NULL
npatrowtext_id integer NOT NULL
npatrowtype_id integer NOT NULL
wordlimit smallint
profile boolean NOT NULL DEFAULT false
npatrow_p_npatrowtext npatrowtext_id npatrow_p_npatrowtype npatrowtype_id

Index - Schema public


Table: npatrow_sig

npatrow_sig Structure
F-Key Name Type Description
npatrow_sig_id serial PRIMARY KEY
npatrow.npatrow_id npatrow_id integer NOT NULL
sig.sig_id sig_id integer NOT NULL
npatoption.npatoption_id npatoption_id integer
rank smallint NOT NULL

Index - Schema public


Table: npatrowshorttext

npatrowshorttext Structure
F-Key Name Type Description
npatrow.npatrow_id npatrow_id integer PRIMARY KEY
shortcategory text NOT NULL
detail text
shorttext text
subcategory text

Index - Schema public


Table: npatrowtext

npatrowtext Structure
F-Key Name Type Description
npatrowtext_id serial PRIMARY KEY
rowtext text NOT NULL DEFAULT ''::text

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: npatrowtext_category

npatrowtext_category Structure
F-Key Name Type Description
npatrowtext_category_id serial PRIMARY KEY
npatrowtext.npatrowtext_id npatrowtext_id integer NOT NULL
category.category_id category_id smallint NOT NULL

Index - Schema public


Table: npatrowtext_p

npatrowtext_p Structure
F-Key Name Type Description
npatrowtext_id serial NOT NULL
rowtext text NOT NULL DEFAULT ''::text

Index - Schema public


Table: npatrowtext_tag

npatrowtext_tag Structure
F-Key Name Type Description
npatrowtext_tag_id serial PRIMARY KEY
npatrowtext.npatrowtext_id npatrowtext_id integer
tag.tag_id tag_id integer

Index - Schema public


Table: npatrowtype

npatrowtype Structure
F-Key Name Type Description
npatrowtype_id serial PRIMARY KEY
open boolean NOT NULL DEFAULT false
npatoptiongroup_id integer

Tables referencing this one via Foreign Key Constraints:

npatrowtype__npatoptiongroup_id npatoptiongroup_id

Index - Schema public


Table: npatstatus

npatstatus Structure
F-Key Name Type Description
npatstatus_id character(1) PRIMARY KEY
name character varying NOT NULL
rank smallint
statustext character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: office

office Structure
F-Key Name Type Description
office_id smallint PRIMARY KEY DEFAULT nextval(('public.office_id_seq'::text)::regclass)
officetype.officetype_id officetype_id character(1) NOT NULL DEFAULT ''::bpchar
release.release_id release_id smallint NOT NULL
code character varying NOT NULL DEFAULT ''::character varying
name character varying NOT NULL DEFAULT ''::character varying
title character varying NOT NULL DEFAULT ''::character varying
npatoffice boolean NOT NULL DEFAULT false
shorttitle character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

office__officetype_id officetype_id

Index - Schema public


Table: office_address

office_address Structure
F-Key Name Type Description
office_address_id serial PRIMARY KEY
office_candidate.office_candidate_id office_candidate_id integer NOT NULL
addresstype.addresstype_id addresstype_id smallint NOT NULL
phone1 character varying
phone2 character varying
fax1 character varying
fax2 character varying
address character varying
city character varying
state.state_id state character(2)
zip character varying
tollfree character varying
ttyd character varying
contactname character varying
contacttitle character varying
note text
rank smallint
npataddress boolean NOT NULL DEFAULT false
office_address__addresstype_id addresstype_id office_address__office_candidate_id office_candidate_id

Index - Schema public


Table: office_candidate

office_candidate Structure
F-Key Name Type Description
office_candidate_id serial PRIMARY KEY
office.office_id office_id smallint NOT NULL
candidate.candidate_id candidate_id integer NOT NULL
state.state_id state_id character(2) NOT NULL
districtname.districtname_id districtname_id smallint
officecandidatestatus.officecandidatestatus_id officecandidatestatus_id smallint NOT NULL
local.local_id local_id integer
termstart flexdate
termend flexdate
specialmsg text NOT NULL DEFAULT ''::text
importid character varying NOT NULL DEFAULT ''::character varying
lastelect character varying
nextelect character varying
firstelect character varying
appointed boolean
parent_id integer
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

office_candidate__candidate_id candidate_id office_candidate__districtname_id districtname_id office_candidate__local_id local_id office_candidate__office_id office_id office_candidate__officecandidatestatus_id officecandidatestatus_id office_candidate__state_id state_id

Index - Schema public


Table: office_candidate_party

office_candidate_party Structure
F-Key Name Type Description
office_candidate_party_id serial PRIMARY KEY
office_candidate.office_candidate_id office_candidate_id integer NOT NULL
party.party_id party_id smallint NOT NULL
office_candidate_party__office_candidate_id office_candidate_id office_candidate_party__party_id party_id

Index - Schema public


Table: office_category

office_category Structure
F-Key Name Type Description
office_category_id serial PRIMARY KEY
office.office_id office_id smallint
category.category_id category_id smallint

Index - Schema public


Table: office_state

office_state Structure
F-Key Name Type Description
office_state_id serial PRIMARY KEY
office_id smallint NOT NULL
state_id character(2) NOT NULL
termlength smallint
termlimit smallint
nextelect smallint
split character varying
appointed boolean

Index - Schema public


Table: office_webaddress

office_webaddress Structure
F-Key Name Type Description
office_webaddress_id serial PRIMARY KEY
office_candidate.office_candidate_id office_candidate_id integer NOT NULL
webaddresstype.webaddresstype_id webaddresstype_id smallint NOT NULL
addresstype.addresstype_id addresstype_id smallint NOT NULL
webaddress character varying
office_webaddress__addresstype_id addresstype_id office_webaddress__oc_id office_candidate_id office_webaddress__webaddresstype_id webaddresstype_id

Index - Schema public


Table: officebranch

officebranch Structure
F-Key Name Type Description
officebranch_id character(1) PRIMARY KEY
name character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: officecandidatestatus

officecandidatestatus Structure
F-Key Name Type Description
officecandidatestatus_id smallint PRIMARY KEY DEFAULT nextval(('officecandidatestatus_id_seq'::text)::regclass)
name character varying NOT NULL DEFAULT ''::character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: officelevel

officelevel Structure
F-Key Name Type Description
officelevel_id character(1) PRIMARY KEY
name character varying NOT NULL DEFAULT ''::character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: officetype

officetype Structure
F-Key Name Type Description
officetype_id character(1) PRIMARY KEY
officelevel.officelevel_id officelevel_id character(1) NOT NULL
officebranch.officebranch_id officebranch_id character(1) NOT NULL
name character varying
fullname character varying NOT NULL DEFAULT ''::character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: officials_roster

officials_roster Structure
F-Key Name Type Description
state_id character(2)
zip5 integer
zip4end smallint
zip4start smallint
candidate_id integer

Index - Schema public


Table: party

party Structure
F-Key Name Type Description
party_id serial PRIMARY KEY
parent_id integer
name character varying NOT NULL DEFAULT ''::character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: party_category

party_category Structure
F-Key Name Type Description
party_category_id serial PRIMARY KEY
party.party_id party_id integer
category.category_id category_id smallint

Index - Schema public


Table: party_tag

party_tag Structure
F-Key Name Type Description
party_tag_id serial PRIMARY KEY
party.party_id party_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL

Index - Schema public


Table: pingpong

pingpong Structure
F-Key Name Type Description
pingpong_id serial PRIMARY KEY
url character varying
status integer
parent_table character varying
parent_column character varying
parent_id_column character varying
parent_id character varying
datetime timestamp without time zone DEFAULT now()

Index - Schema public


Table: pingpong_harvest

pingpong_harvest Structure
F-Key Name Type Description
pingpong_harvest_id serial PRIMARY KEY
last_modified timestamp without time zone DEFAULT now()

Index - Schema public


Table: primarytype

primarytype Structure
F-Key Name Type Description
primarytype_id character(1) PRIMARY KEY
name character varying
description text

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: primarytype_state

primarytype_state Structure
F-Key Name Type Description
primarytype_state_id serial NOT NULL
party.party_id party_id integer
primarytype.primarytype_id primarytype_id character(1)
state.state_id state_id character(2)

Index - Schema public


Table: profession

profession Structure
F-Key Name Type Description
profession_id serial PRIMARY KEY
candidate.candidate_id candidate_id integer NOT NULL
title text
organization text
span text

Index - Schema public


View: pvs_encoding

pvs_encoding Structure
F-Key Name Type Description
translate text
SELECT translate
(npatcitation.citation
     ,'”’–œ™â€'::text
     ,'"''-"''"'::text
) AS translate
   
FROM npatcitation
  
WHERE (npatcitation.citation ~ 'â'::text);

Index - Schema public


Table: pyadmin_tasks

pyadmin_tasks Structure
F-Key Name Type Description
pyadmin_tasks_id serial PRIMARY KEY
user.user_id user_id character varying
tablename character varying
start_id smallint
end_id smallint
created timestamp without time zone DEFAULT now()
completed timestamp without time zone

Index - Schema public


View: raster_columns

raster_columns Structure
F-Key Name Type Description
r_table_catalog name
r_table_schema name
r_table_name name
r_raster_column name
srid integer
scale_x double precision
scale_y double precision
blocksize_x integer
blocksize_y integer
same_alignment boolean
regular_blocking boolean
num_bands integer
pixel_types text[]
nodata_values double precision[]
out_db boolean[]
extent geometry
SELECT current_database
() AS r_table_catalog
,
    n.nspname AS r_table_schema
,
    c.relname AS r_table_name
,
    a.attname AS r_raster_column
,
    COALESCE
(_raster_constraint_info_srid
     (n.nspname
           , c.relname
           , a.attname
     )
     , (
      SELECT st_srid
           ('010100000000000000000000000000000000000000'::geometry) AS st_srid
     )
) AS srid
,
    _raster_constraint_info_scale
(n.nspname
     , c.relname
     , a.attname
     ,'x'::bpchar
) AS scale_x
,
    _raster_constraint_info_scale
(n.nspname
     , c.relname
     , a.attname
     ,'y'::bpchar
) AS scale_y
,
    _raster_constraint_info_blocksize
(n.nspname
     , c.relname
     , a.attname
     ,'width'::text
) AS blocksize_x
,
    _raster_constraint_info_blocksize
(n.nspname
     , c.relname
     , a.attname
     ,'height'::text
) AS blocksize_y
,
    COALESCE
(_raster_constraint_info_alignment
     (n.nspname
           , c.relname
           , a.attname
     )
     , false
) AS same_alignment
,
    COALESCE
(_raster_constraint_info_regular_blocking
     (n.nspname
           , c.relname
           , a.attname
     )
     , false
) AS regular_blocking
,
    _raster_constraint_info_num_bands
(n.nspname
     , c.relname
     , a.attname
) AS num_bands
,
    _raster_constraint_info_pixel_types
(n.nspname
     , c.relname
     , a.attname
) AS pixel_types
,
    _raster_constraint_info_nodata_values
(n.nspname
     , c.relname
     , a.attname
) AS nodata_values
,
    _raster_constraint_info_out_db
(n.nspname
     , c.relname
     , a.attname
) AS out_db
,
    _raster_constraint_info_extent
(n.nspname
     , c.relname
     , a.attname
) AS extent
   
FROM pg_class c
,
    pg_attribute a
,
    pg_type t
,
    pg_namespace n
  
WHERE (
     (
           (
                 (
                       (
                             (
                                   (t.typname = 'raster'::name)
                                 AND (a.attisdropped = false)
                             )
                           AND (a.atttypid = t.oid)
                       )
                     AND (a.attrelid = c.oid)
                 )
               AND (c.relnamespace = n.oid)
           )
         AND (
                 (c.relkind)::text = ANY 
                 (
                       (ARRAY['r'::character
                             (1)
                             ,'v'::character
                             (1)
                             ,'m'::character
                             (1)
                             ,'f'::character
                             (1)]
                       )::text[]
                 )
           )
     )
   AND (NOT pg_is_other_temp_schema
           (c.relnamespace)
     )
);

Index - Schema public


View: raster_overviews

raster_overviews Structure
F-Key Name Type Description
o_table_catalog name
o_table_schema name
o_table_name name
o_raster_column name
r_table_catalog name
r_table_schema name
r_table_name name
r_raster_column name
overview_factor integer
SELECT current_database
() AS o_table_catalog
,
    n.nspname AS o_table_schema
,
    c.relname AS o_table_name
,
    a.attname AS o_raster_column
,
    current_database
() AS r_table_catalog
,
    
(split_part
     (split_part
           (s.consrc
                 ,'''::name'::text
                 , 1
           )
           ,''''::text
           , 2
     )
)::name AS r_table_schema
,
    
(split_part
     (split_part
           (s.consrc
                 ,'''::name'::text
                 , 2
           )
           ,''''::text
           , 2
     )
)::name AS r_table_name
,
    
(split_part
     (split_part
           (s.consrc
                 ,'''::name'::text
                 , 3
           )
           ,''''::text
           , 2
     )
)::name AS r_raster_column
,
    
(btrim
     (split_part
           (s.consrc
                 ,','::text
                 , 2
           )
     )
)::integer AS overview_factor
   
FROM pg_class c
,
    pg_attribute a
,
    pg_type t
,
    pg_namespace n
,
    pg_constraint s
  
WHERE (
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (t.typname = 'raster'::name)
                                                   AND (a.attisdropped = false)
                                               )
                                             AND (a.atttypid = t.oid)
                                         )
                                       AND (a.attrelid = c.oid)
                                   )
                                 AND (c.relnamespace = n.oid)
                             )
                           AND (
                                   (c.relkind)::text = ANY 
                                   (
                                         (ARRAY['r'::character
                                               (1)
                                               ,'v'::character
                                               (1)
                                               ,'m'::character
                                               (1)
                                               ,'f'::character
                                               (1)]
                                         )::text[]
                                   )
                             )
                       )
                     AND (s.connamespace = n.oid)
                 )
               AND (s.conrelid = c.oid)
           )
         AND (s.consrc ~~ 
'%_overview_constraint(%'::text)
           )
         AND (NOT pg_is_other_temp_schema
                 (c.relnamespace)
           )
     );

Index - Schema public


Table: rating

rating Structure
F-Key Name Type Description
rating_id serial PRIMARY KEY
sig.sig_id sig_id integer NOT NULL
ratingformat.ratingformat_id ratingformat_id smallint NOT NULL
ratingsession.ratingsession_id ratingsession_id smallint NOT NULL DEFAULT (-1)
release.release_id release_id smallint NOT NULL
span character varying NOT NULL DEFAULT ''::character varying
ratingtext text NOT NULL DEFAULT ''::text
description text NOT NULL DEFAULT ''::text
name character varying NOT NULL DEFAULT ''::character varying
usesigrating boolean
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

rating__release_id release_id rating__sig_id sig_id rating__span__lastyear "substring"((span)::text, '\d{4}$'::text) DESC NULLS LAST

Index - Schema public


Table: rating_candidate

rating_candidate Structure
F-Key Name Type Description
rating_candidate_id serial PRIMARY KEY
rating.rating_id rating_id integer NOT NULL
candidate.candidate_id candidate_id integer NOT NULL
sig_rating character varying NOT NULL
our_rating character varying NOT NULL
rating_candidate__candidate_id candidate_id rating_candidate__rating_id rating_id

Index - Schema public


Table: rating_category

rating_category Structure
F-Key Name Type Description
rating_category_id serial PRIMARY KEY
rating.rating_id rating_id integer NOT NULL
category.category_id category_id smallint NOT NULL
rating_category__category_id category_id rating_category__rating_id rating_id

Index - Schema public


Table: rating_tag

rating_tag Structure
F-Key Name Type Description
rating_tag_id serial PRIMARY KEY
rating.rating_id rating_id integer
tag.tag_id tag_id integer

Index - Schema public


Table: ratingformat

ratingformat Structure
F-Key Name Type Description
ratingformat_id smallint PRIMARY KEY DEFAULT nextval(('ratingformat_id_seq'::text)::regclass)
name character varying NOT NULL DEFAULT ''::character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: ratingsession

ratingsession Structure
F-Key Name Type Description
ratingsession_id smallint PRIMARY KEY DEFAULT nextval(('ratingsession_id_seq'::text)::regclass)
name character varying NOT NULL DEFAULT ''::character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: ratingtext

ratingtext Structure
F-Key Name Type Description
ratingtext_id smallint PRIMARY KEY DEFAULT nextval(('ratingtext_id_seq'::text)::regclass)
name character varying NOT NULL DEFAULT ''::character varying
ratingtext text NOT NULL DEFAULT ''::text
description text NOT NULL DEFAULT ''::text
rank smallint

Index - Schema public


Table: release

release Structure
F-Key Name Type Description
release_id smallint PRIMARY KEY
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: religion

religion Structure
F-Key Name Type Description
religion_id serial PRIMARY KEY
name character varying NOT NULL DEFAULT ''::text
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: religion_category

religion_category Structure
F-Key Name Type Description
religion_category_id serial PRIMARY KEY
category.category_id category_id smallint
religion_id integer
religion_category__uniq religion_id, category_id

Index - Schema public


Table: religion_tag

religion_tag Structure
F-Key Name Type Description
religion_tag_id serial PRIMARY KEY
religion.religion_id religion_id integer NOT NULL
tag.tag_id tag_id integer NOT NULL
religion_tag__tag tag_id religion_tag__uniq religion_id, tag_id

Index - Schema public


Table: resource

resource Structure
F-Key Name Type Description
resource_id serial PRIMARY KEY
resourcetype.resourcetype_id resourcetype_id smallint NOT NULL
state.state_id state_id character(2)
name character varying NOT NULL
url character varying
email character varying
address character varying
city character varying
state character(2)
zip character varying
phone1 character varying
fax character varying
mission text
phone2 character varying
tdd character varying
hours character varying
foiaurl character varying
resource__name name resource__resourcetype_id resourcetype_id resource__state_id state_id

Index - Schema public


Table: resourcetype

resourcetype Structure
F-Key Name Type Description
resourcetype_id serial PRIMARY KEY
parent_id smallint
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: role

role Structure
F-Key Name Type Description
role_id character varying PRIMARY KEY
description text

Index - Schema public


Table: section

section Structure
F-Key Name Type Description
section_id character(1) PRIMARY KEY
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: sig

sig Structure
F-Key Name Type Description
sig_id serial PRIMARY KEY
parent_id integer NOT NULL DEFAULT (-1)
state.state_id state_id character(2) NOT NULL
release.release_id release_id smallint NOT NULL
name character varying NOT NULL DEFAULT ''::character varying
address character varying NOT NULL DEFAULT ''::character varying
city character varying NOT NULL DEFAULT ''::character varying
zip character varying NOT NULL DEFAULT ''::character varying
phone1 character varying NOT NULL DEFAULT ''::character varying
fax character varying NOT NULL DEFAULT ''::character varying
email character varying NOT NULL DEFAULT ''::character varying
url character varying NOT NULL DEFAULT ''::character varying
description text NOT NULL DEFAULT ''::text
contactname character varying NOT NULL DEFAULT ''::character varying
phone2 character varying NOT NULL DEFAULT ''::character varying
ratinggroup boolean
state.state_id state character(2)
usesigrating boolean
major boolean
note text

Tables referencing this one via Foreign Key Constraints:

sig__release_id release_id sig__state_id state_id

Index - Schema public


Table: sig_category

sig_category Structure
F-Key Name Type Description
sig_category_id serial PRIMARY KEY
sig.sig_id sig_id integer NOT NULL
category.category_id category_id smallint NOT NULL

Index - Schema public


Table: sig_tag

sig_tag Structure
F-Key Name Type Description
sig_tag_id serial PRIMARY KEY
sig.sig_id sig_id integer
tag.tag_id tag_id integer

Index - Schema public


Table: sigtype

sigtype Structure
F-Key Name Type Description
sigtype character(1) PRIMARY KEY
name character varying

Index - Schema public


Table: spatial_ref_sys

spatial_ref_sys Structure
F-Key Name Type Description
srid integer PRIMARY KEY
auth_name character varying(256)
auth_srid integer
srtext character varying(2048)
proj4text character varying(2048)

 

spatial_ref_sys Constraints
Name Constraint
spatial_ref_sys_srid_check CHECK (((srid > 0) AND (srid <= 998999)))

Index - Schema public


Table: speech

speech Structure
F-Key Name Type Description
speech_id serial PRIMARY KEY
speechtype.speechtype_id speechtype_id smallint NOT NULL
title character varying NOT NULL DEFAULT ''::character varying
speechdate date DEFAULT now()
location character varying NOT NULL DEFAULT ''::character varying
source character varying NOT NULL DEFAULT ''::character varying
speechtext text NOT NULL
url character varying NOT NULL DEFAULT ''::character varying
release.release_id release_id smallint
created timestamp without time zone
modified timestamp without time zone
speech_tsv tsvector
key boolean
summary text
quote text

Tables referencing this one via Foreign Key Constraints:

speech__release_id release_id speech__speech_tsv speech_tsv speech__speechdate speechdate speech__speechtype_id speechtype_id

Index - Schema public


Table: speech_candidate

speech_candidate Structure
F-Key Name Type Description
speech_candidate_id serial PRIMARY KEY
speech.speech_id speech_id integer NOT NULL
candidate.candidate_id candidate_id integer NOT NULL
created timestamp without time zone
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

speech_candidate__candidate_id candidate_id speech_candidate__speech_id speech_id

Index - Schema public


Table: speech_category

speech_category Structure
F-Key Name Type Description
speech_category_id serial PRIMARY KEY
speech.speech_id speech_id integer NOT NULL
category.category_id category_id smallint NOT NULL
speech_category__category_id category_id

Index - Schema public


Table: speech_tag

speech_tag Structure
F-Key Name Type Description
speech_tag_id serial PRIMARY KEY
speech.speech_id speech_id integer
tag.tag_id tag_id integer
speech_tag__tag_id tag_id

Index - Schema public


Table: speechlock

speechlock Structure
F-Key Name Type Description
speech_id integer NOT NULL
lock boolean NOT NULL
session_id character varying NOT NULL
expire timestamp without time zone NOT NULL

Index - Schema public


Table: speechlocking

speechlocking Structure
F-Key Name Type Description
speech.speech_id speech_id integer PRIMARY KEY
rank serial NOT NULL
committed boolean NOT NULL DEFAULT false
accessedby character varying
accessed timestamp without time zone
speechlocking__rank rank

Index - Schema public


Table: speechtype

speechtype Structure
F-Key Name Type Description
speechtype_id smallint PRIMARY KEY DEFAULT nextval(('speechtype_id_seq'::text)::regclass)
name character varying NOT NULL DEFAULT ''::character varying

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: stat

stat Structure
F-Key Name Type Description
stat_id text PRIMARY KEY
value bigint
rank smallint
name text

Index - Schema public


Table: state

state Structure
F-Key Name Type Description
state_id character(2) PRIMARY KEY
statetype.statetype_id statetype_id character(1)
statecode smallint NOT NULL
name character varying NOT NULL DEFAULT ''::character varying
nickname character varying NOT NULL DEFAULT ''::character varying
capital character varying NOT NULL DEFAULT ''::character varying
area character varying
population character varying
statehood character varying NOT NULL DEFAULT ''::character varying
motto character varying NOT NULL DEFAULT ''::character varying
flower character varying NOT NULL DEFAULT ''::character varying
tree character varying NOT NULL DEFAULT ''::character varying
bird character varying NOT NULL DEFAULT ''::character varying
high character varying NOT NULL DEFAULT ''::character varying
low character varying NOT NULL DEFAULT ''::character varying
type character varying NOT NULL DEFAULT ''::character varying
legisname character varying NOT NULL DEFAULT ''::character varying
ltgov boolean NOT NULL DEFAULT false
bicameral boolean NOT NULL DEFAULT false
lowername character varying NOT NULL DEFAULT ''::character varying
senators smallint NOT NULL
reps smallint NOT NULL
termlimit smallint NOT NULL
termlength smallint NOT NULL
billurl character varying NOT NULL DEFAULT ''::character varying
voteurl character varying NOT NULL DEFAULT ''::character varying
registration text NOT NULL DEFAULT ''::text
primarydate date
generaldate date
absenteewho text NOT NULL DEFAULT ''::text
absenteehow text NOT NULL DEFAULT ''::text
absenteewhen text NOT NULL DEFAULT ''::text
largestcity character varying NOT NULL DEFAULT ''::character varying
atlarge boolean NOT NULL DEFAULT false
ushousename character varying
rollupper character varying
rolllower character varying
uscircuit character varying NOT NULL DEFAULT ''::character varying
electoralvotes smallint
caucus boolean
created timestamp without time zone
modified timestamp without time zone
delegaterep smallint
delegatedem smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: statetype

statetype Structure
F-Key Name Type Description
statetype_id character(1) PRIMARY KEY
name character varying NOT NULL

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: tag

tag Structure
F-Key Name Type Description
tag_id serial PRIMARY KEY
name text NOT NULL
deleted boolean NOT NULL DEFAULT false
modified timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

tag__name_trgm_idx name gist_trgm_ops

Index - Schema public


Table: tagalias

tagalias Structure
F-Key Name Type Description
tagalias_id serial PRIMARY KEY
tag.tag_id tag_id integer
alias text UNIQUE NOT NULL

Index - Schema public


Table: user

user Structure
F-Key Name Type Description
user_id character varying PRIMARY KEY
password character varying NOT NULL
name character varying NOT NULL DEFAULT ''::character varying
notes character varying NOT NULL DEFAULT ''::character varying
lastlogin timestamp without time zone

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: user_role

user_role Structure
F-Key Name Type Description
user.user_id user_id character varying PRIMARY KEY
role_id character varying PRIMARY KEY

Index - Schema public


View: v_biotext_count

v_biotext_count Structure
F-Key Name Type Description
count bigint
type text
SELECT count
(*) AS count
,
    'uncategorized'::text AS type
   
FROM biotextlocking sl
  
WHERE (
     (NOT 
           (sl.committed 
               AND (
                       (sl.accessedby)::text <> 'auto'::text
                 )
           )
     )
    OR (NOT 
           (EXISTS 
                 (
                  SELECT 1
           
                    FROM biotext_category sc
          
                   WHERE (sc.biotext_id = sl.biotext_id)
                 )
           )
     )
)
UNION
 
SELECT count
(*) AS count
,
    
'uncategorized (current federal candidates/officials)'::text AS type
   
FROM   biotext s
  
WHERE  (
(NOT 
     (EXISTS 
           (
            SELECT 1
           
              FROM biotext_category sc
          
             WHERE (sc.biotext_id = s.biotext_id)
           )
     )
)
AND (s.officelevel_id = 'F'::bpchar)
)     
  
ORDER BY 2;

Index - Schema public


View: v_blog_categories

v_blog_categories Structure
F-Key Name Type Description
category_id integer
title character varying
slug character varying
SELECT category.category_id
,
    category.name AS title
,
    slugify
(category.name) AS slug
   
FROM category

UNION
 
SELECT blog_categories.id AS category_id
,
    blog_categories.title
,
    blog_categories.slug
   
FROM blog_categories;

Index - Schema public


View: v_candidate_timeline

v_candidate_timeline Structure
F-Key Name Type Description
candidate_id integer
type text
when timestamp without time zone
title text
id1 integer
id2 integer
category_id smallint
extra character varying
SELECT DISTINCT c.candidate_id
,
    'V'::text AS type
,
    
(cs.statusdate)::timestamp without time zone AS "when"
,
    
(
     (
           (
                 (
                       (
                             (
                                   (
                                         (
        CASE
            WHEN 
                                               (c.candidatepreferredname_id = 'M'::bpchar) THEN c.middlename
            WHEN 
                                               (c.candidatepreferredname_id = 'N'::bpchar) THEN c.nickname
            ELSE c.firstname
        END
                                         )::text || ' '::text
                                   ) || 
                                   (c.lastname)::text
                             ) ||
        CASE
            WHEN 
                             (cat.congactiontype_id = 'E'::bpchar) THEN
            CASE
                WHEN 
                             (ca.congaction_id <> 'P'::bpchar) THEN 
                             (' vetoed '::text ||
                CASE
                    WHEN 
                                   (ca.congaction_id <> 'V'::bpchar) THEN 
                                   (
                                         (
                                             '('::text || 
                                                     (ca.name)::text
                                               ) || 
                                       ')'::text
                                   )
                    ELSE ''::text
                END
                             )
                WHEN 
                             (ca.congaction_id = 'P'::bpchar) THEN ' signed '::text
                ELSE ' did not sign '::text
            END
            ELSE
            CASE
                WHEN 
                             (ca.congaction_id = '-'::bpchar) THEN ' did not vote '::text
                ELSE
                CASE
                    WHEN 
                             (ca.congactiontype_id = 'S'::bpchar) THEN 
                             (
                                   (' '::text || 
                                         (ca.name)::text
                                   ) || 'ed'::text
                             )
                    ELSE 
                             (
                                   (
                                         (
                                               (' voted '::text || 
                                                     (ca.name)::text
                                               ) || 
                                            ' ('::text) || 
                                               (cstage.name)::text
                                         ) || 
                                 ')'::text
                             )
                END
            END
        END
                       ) || ' - '::text
                 ) || 
                 (cong.billnumber)::text
           ) || ' - '::text
     ) || 
     (
           (
            SELECT ct_1.title
           
              FROM (congtitle ct_1
             
                    JOIN congstatus cs_1 
                   USING (congtitle_id)
                 )
          
             WHERE (
                       (cs_1.congress_id = cong.congress_id)
                     AND (
                             (
                                   (ct_1.title)::text <> ''::text
                             )
                           AND (ct_1.title IS NOT NULL)
                       )
                 )
          
          ORDER BY cs_1.statusdate DESC
         LIMIT 1
           )
     )::text
) AS title
,
    cong.congress_id AS id1
,
    cs.congstatus_id AS id2
,
    category.category_id
,
    NULL::character varying AS extra
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (office_candidate oc
     
                                                        JOIN candidate c 
                                                       USING (candidate_id)
                                                     )
     
                                                  JOIN congstatus_candidate csc 
                                                 USING (office_candidate_id)
                                               )
     
                                            JOIN congstatus cs 
                                           USING (congstatus_id)
                                         )
     
                                      JOIN congstage cstage 
                                     USING (congstage_id)
                                   )
     
                                JOIN congaction ca 
                               USING (congaction_id)
                             )
     
                          JOIN congactiontype cat 
                         USING (congactiontype_id)
                       )
     
                    JOIN congress cong 
                   USING (congress_id)
                 )
     
              JOIN congtype ct 
             USING (congtype_id)
           )
     
   LEFT JOIN congcategory_category congcat 
       USING (congcategory_id)
     )
     
LEFT JOIN category 
 USING (category_id)
)
  
WHERE (
     (
           (cs.statusdate IS NOT NULL)
         AND (cs.release_id >= 2)
     )
   AND (c.release_id >= 2)
)
UNION
 
SELECT DISTINCT sc.candidate_id
,
    'S'::text AS type
,
    
(s.speechdate)::timestamp without time zone AS "when"
,
    s.title
,
    s.speech_id AS id1
,
    NULL::integer AS id2
,
    category.category_id
,
    st.name AS extra
   
FROM (
     (
           (
                 (
                       (speech_candidate sc
     
                          JOIN candidate c 
                         USING (candidate_id)
                       )
     
                    JOIN speech s 
                   USING (speech_id)
                 )
     
              JOIN speechtype st 
             USING (speechtype_id)
           )
     
   LEFT JOIN speech_category scat 
       USING (speech_id)
     )
     
LEFT JOIN category 
 USING (category_id)
)
  
WHERE (
     (s.speechdate IS NOT NULL)
   AND (s.release_id >= 2)
)
UNION
 
SELECT DISTINCT rc.candidate_id
,
    'R'::text AS type
,
    r.created AS "when"
,
    
(
     (
           (
                 (
                       (
                             (
                                   (
                                         (
        CASE
            WHEN 
                                               (c.candidatepreferredname_id = 'M'::bpchar) THEN c.middlename
            WHEN 
                                               (c.candidatepreferredname_id = 'N'::bpchar) THEN c.nickname
            ELSE c.firstname
        END
                                         )::text || ' '::text
                                   ) || 
                                   (c.lastname)::text
                             ) || ' was rated '::text
                       ) ||
        CASE
            WHEN 
                       (
                             (
                                   (r.usesigrating 
                                        OR s.usesigrating
                                   )
                                 AND (rc.sig_rating IS NOT NULL)
                             )
                           AND (r.ratingformat_id <> 3)
                       ) THEN 
                       (
                             (rc.sig_rating)::text ||
            CASE
                WHEN 
                             (
                                   (r.ratingtext ~ 'percent'::text)
                                 AND (r.ratingformat_id = 1)
                             ) THEN '%'::text
                ELSE ''::text
            END
                       )
            ELSE 
                       (
                             (rc.our_rating)::text || '%'::text
                       )
        END
                 ) || ' by '::text
           ) || 
           (s.name)::text
     ) ||
        CASE
            WHEN 
     (r.name IS NOT NULL) THEN 
     (
           (
              ' ('::text || 
                       (r.name)::text
                 ) || 
         ')'::text
     )
            ELSE ''::text
        END
) AS title
,
    s.sig_id AS id1
,
    r.rating_id AS id2
,
    category.category_id
,
    NULL::character varying AS extra
   
FROM (
     (
           (
                 (
                       (rating_candidate rc
     
                          JOIN candidate c 
                         USING (candidate_id)
                       )
     
                    JOIN rating r 
                   USING (rating_id)
                 )
     
              JOIN sig s 
             USING (sig_id)
           )
     
   LEFT JOIN rating_category rcat 
       USING (rating_id)
     )
     
LEFT JOIN category 
 USING (category_id)
)
  
WHERE (
     (
           (r.created IS NOT NULL)
         AND (r.release_id >= 2)
     )
   AND (s.release_id >= 2)
)
UNION
 
SELECT ec.candidate_id
,
    'P'::text AS type
,
    nc.modified AS "when"
,
    
(
     (
           (
                 (
                       (
                             (
        CASE
            WHEN 
                                   (c.candidatepreferredname_id = 'M'::bpchar) THEN c.middlename
            WHEN 
                                   (c.candidatepreferredname_id = 'N'::bpchar) THEN c.nickname
            ELSE c.firstname
        END
                             )::text || ' '::text
                       ) || 
                       (c.lastname)::text
                 ) ||
        CASE
            WHEN 
                 (ns.npatstatus_id = 'P'::bpchar) THEN ' is being tested for the '::text
            ELSE 
                 (
                       (' has '::text ||
            CASE
                WHEN 
                             (ns.npatstatus_id = ANY 
                                   (ARRAY['F'::bpchar
                                         ,'S'::bpchar]
                                   )
                             ) THEN 'failed'::text
                ELSE 'passed'::text
            END
                       ) || ' the '::text
                 )
        END
           ) || e.electionyear
     ) ||
        CASE
            WHEN 
     (e.electionyear >= 2010) THEN ' Political Courage Test.'::text
            ELSE ' National Political Awareness Test.'::text
        END
) AS title
,
    c.candidate_id AS id1
,
    NULL::integer AS id2
,
    NULL::smallint AS category_id
,
    NULL::character varying AS extra
   
FROM (
     (
           (
                 (
                       (
                             (npatcandidate nc
     
                                JOIN election_candidate ec 
                               USING (election_candidate_id)
                             )
     
                          JOIN election e 
                         USING (election_id)
                       )
     
                    JOIN electionstage_candidate esc 
                   USING (election_candidate_id)
                 )
     
              JOIN election_electionstage ees 
             USING (election_electionstage_id)
           )
     
        JOIN candidate c 
       USING (candidate_id)
     )
     
  JOIN npatstatus ns 
 USING (npatstatus_id)
)
  
WHERE (
     (
           (nc.modified IS NOT NULL)
         AND (ees.release_id >= 2)
     )
   AND (ees.npatrelease_id >= 2)
)
UNION
 
SELECT c.candidate_id
,
    'E'::text AS type
,
    e.modified AS "when"
,
    
(
     (
           (
                 (
                       (
        CASE
            WHEN 
                             (c.candidatepreferredname_id = 'M'::bpchar) THEN c.middlename
            WHEN 
                             (c.candidatepreferredname_id = 'N'::bpchar) THEN c.nickname
            ELSE c.firstname
        END
                       )::text || ' '::text
                 ) || 
                 (c.lastname)::text
           ) || ' was endorsed by '::text
     ) || 
     (s.name)::text
) AS title
,
    s.sig_id AS id1
,
    NULL::integer AS id2
,
    NULL::smallint AS category_id
,
    NULL::character varying AS extra
   
FROM (
     (
           (
                 (candidate c
     
                    JOIN election_candidate ec 
                   USING (candidate_id)
                 )
     
              JOIN endorse_candidate enc 
             USING (election_candidate_id)
           )
     
        JOIN endorse e 
       USING (endorse_id)
     )
     
  JOIN sig s 
 USING (sig_id)
)
  
WHERE (
     (e.modified IS NOT NULL)
   AND (e.release_id >= 2)
)
UNION
 
SELECT fc.candidate_id
,
    'F'::text AS type
,
    fcand.date AS "when"
,
    
(
     (
           (
                 (
                       (
                             (
        CASE
            WHEN 
                                   (c.candidatepreferredname_id = 'M'::bpchar) THEN c.middlename
            WHEN 
                                   (c.candidatepreferredname_id = 'N'::bpchar) THEN c.nickname
            ELSE c.firstname
        END
                             )::text || ' '::text
                       ) || 
                       (c.lastname)::text
                 ) ||
        CASE
            WHEN 
                 (sum
                       (fcand.dollars) < 
                       (0)::numeric
                 ) THEN ' returned $'::text
            ELSE ' received $'::text
        END
           ) || btrim
           (replace
                 (to_char
                       (sum
                             (fcand.dollars)
                             ,'999,999,999'::text
                       )
                       ,'-'::text
                       ,''::text
                 )
           )
     ) || ' in donations on this day.'::text
) AS title
,
    fc.candidate_id AS id1
,
    NULL::integer AS id2
,
    NULL::smallint AS category_id
,
    NULL::character varying AS extra
   
FROM (
     (
           (finsource_candidate fc
     
              JOIN election_candidate ec 
             USING (candidate_id)
           )
     
        JOIN candidate c 
       USING (candidate_id)
     )
     
  JOIN finance_candidate fcand 
 USING (election_candidate_id)
)
  
WHERE (
     (
           (fcand.dollars <> 0)
         AND (fcand.date IS NOT NULL)
     )
   AND (ec.election_candidate_id = 
           (
            SELECT sec.election_candidate_id
           
              FROM (election_candidate sec
             
                    JOIN election se 
                   USING (election_id)
                 )
          
             WHERE (sec.candidate_id = ec.candidate_id)
          
          ORDER BY se.electionyear DESC
         LIMIT 1
           )
     )
)
  
GROUP BY fc.candidate_id
,'F'::text
, fcand.date
, NULL::integer
, NULL::smallint
, c.candidatepreferredname_id
, c.firstname
, c.middlename
, c.nickname
, c.lastname;

Index - Schema public


View: v_category

v_category Structure
F-Key Name Type Description
name character varying
category_id smallint
parent_id integer
level integer
path character varying
rank smallint
release_id smallint
description text
 WITH RECURSIVE t AS 
(
         
SELECT c.name
     ,
            c.category_id
     ,
            cc.parent_id
     ,
            0 AS level
     ,
            c.name AS path
     ,
            c.rank
     ,
            c.release_id
     ,
            ''::text AS description
           
  FROM (category c
             
   LEFT JOIN category_category cc 
          ON (
                 (c.category_id = cc.category_id)
           )
     )
          
 WHERE (
           (cc.category_id IS NULL)
          OR c.key
     )
        
UNION ALL
         
SELECT c.name
     ,
            c.category_id
     ,
            cc.parent_id
     ,
            
     (t_1.level + 1)
     ,
            
     (
           (
                 (t_1.path)::text || '/'::text
           ) || 
           (c.name)::text
     ) AS path
     ,
            t_1.rank
     ,
            c.release_id
     ,
            c.description
           
  FROM (category c
             
   LEFT JOIN category_category cc 
       USING (category_id)
     )
     ,
            t t_1
     (name
           , category_id_1
           , parent_id
           , level
           , path
           , rank
           , release_id
           , description
     )
          
 WHERE (cc.parent_id = t_1.category_id_1)
        
)
 
SELECT DISTINCT t.name
,
    t.category_id
,
    t.parent_id
,
    t.level
,
    t.path
,
    t.rank
,
    t.release_id
,
    t.description
   
FROM t
  
ORDER BY t.rank
, t.path;

Index - Schema public


View: v_category_new

v_category_new Structure
F-Key Name Type Description
name character varying
category_id smallint
parent_id integer
level integer
path character varying
lpath ltree
rank smallint
release_id smallint
description text
 WITH RECURSIVE t AS 
(
         
SELECT c.name
     ,
            c.category_id
     ,
            cc.parent_id
     ,
            0 AS level
     ,
            c.name AS path
     ,
            
     (
           (c.category_id)::text
     )::ltree AS lpath
     ,
            c.rank
     ,
            c.release_id
     ,
            ''::text AS description
           
  FROM (category c
             
   LEFT JOIN category_category cc 
          ON (
                 (c.category_id = cc.category_id)
           )
     )
          
 WHERE (
           (cc.category_id IS NULL)
          OR c.key
     )
        
UNION ALL
         
SELECT c.name
     ,
            c.category_id
     ,
            cc.parent_id
     ,
            
     (t_1.level + 1)
     ,
            
     (
           (
                 (t_1.path)::text || '/'::text
           ) || 
           (c.name)::text
     ) AS path
     ,
            
     (
           (
                 (
                       (t_1.lpath)::text || '.'::text
                 ) || 
                 (c.category_id)::text
           )
     )::ltree AS lpath
     ,
            t_1.rank
     ,
            c.release_id
     ,
            c.description
           
  FROM (category c
             
   LEFT JOIN category_category cc 
       USING (category_id)
     )
     ,
            t t_1
     (name
           , category_id_1
           , parent_id
           , level
           , path
           , lpath
           , rank
           , release_id
           , description
     )
          
 WHERE (cc.parent_id = t_1.category_id_1)
        
)
 
SELECT DISTINCT t.name
,
    t.category_id
,
    t.parent_id
,
    t.level
,
    t.path
,
    t.lpath
,
    t.rank
,
    t.release_id
,
    t.description
   
FROM t
  
ORDER BY t.rank
, t.path;

Index - Schema public


View: v_category_released

v_category_released Structure
F-Key Name Type Description
name character varying
category_id smallint
parent_id integer
level integer
released smallint[]
rank smallint
release_id smallint
description text
 WITH RECURSIVE t AS 
(
         
SELECT c.name
     ,
            c.category_id
     ,
            cc.parent_id
     ,
            0 AS level
     ,
                CASE
                    WHEN 
     (c.release_id >= 2) THEN ARRAY[c.category_id]
                    ELSE ARRAY[NULL::smallint]
                END AS released
     ,
            c.rank
     ,
            c.release_id
     ,
            ''::text AS description
           
  FROM (category c
             
   LEFT JOIN category_category cc 
          ON (
                 (c.category_id = cc.category_id)
           )
     )
          
 WHERE (
           (cc.category_id IS NULL)
          OR c.key
     )
        
UNION ALL
         
SELECT c.name
     ,
            c.category_id
     ,
            cc.parent_id
     ,
            
     (t_1.level + 1)
     ,
                CASE
                    WHEN 
     (c.release_id >= 2) THEN array_append
     (t_1.released
           , c.category_id
     )
                    ELSE t_1.released
                END AS released
     ,
            t_1.rank
     ,
            c.release_id
     ,
            c.description
           
  FROM (category c
             
   LEFT JOIN category_category cc 
       USING (category_id)
     )
     ,
            t t_1
     (name
           , category_id_1
           , parent_id
           , level
           , released
           , rank
           , release_id
           , description
     )
          
 WHERE (cc.parent_id = t_1.category_id_1)
        
)
 
SELECT DISTINCT t.name
,
    t.category_id
,
    t.parent_id
,
    t.level
,
    t.released
,
    t.rank
,
    t.release_id
,
    t.description
   
FROM t
  
ORDER BY t.rank
, t.released;

Index - Schema public


View: v_category_resolve

v_category_resolve Structure
F-Key Name Type Description
category_id smallint
new_category_id smallint
name character varying
description text
SELECT c.category_id
,
    COALESCE
(c2.category_id
     , c.category_id
) AS new_category_id
,
    COALESCE
(c2.name
     , c.name
) AS name
,
    COALESCE
(c2.description
     , c.description
) AS description
   
FROM (
     (category c
     
   LEFT JOIN category_released cr 
          ON (
                 (
                       (cr.unreleased_category_id = c.category_id)
                     AND (c.release_id < 2)
                 )
           )
     )
     
LEFT JOIN category c2 
    ON (
           (
                 (c2.category_id = cr.released_category_id)
               AND (c2.release_id = 2)
           )
     )
);

Index - Schema public


View: v_congstatus

v_congstatus Structure
F-Key Name Type Description
congress_id integer
congtype_id character(1)
state_id character(2)
congstatus_id integer
conglevel_id character(1)
congstage_id smallint
congoutcome_id smallint
congofficialtitle_id integer
congtitle_id integer
conghighlight_id integer
congsynopsis_id integer
congcategory_id integer
congofficialsynopsis_id integer
congtext_id integer
congress_release_id smallint
congstatus_release_id smallint
billnumber character varying
statename character varying
url character varying
rank smallint
statusdate date
rollnumber smallint
level character varying
stage character varying
outcome character varying
yea smallint
nay smallint
voicevote boolean
keyvote boolean
congress_note character varying
congstatus_note character varying
officialtitle text
title character varying
highlight text
synopsis text
officialsynopsis text
SELECT c.congress_id
,
    ct.congtype_id
,
    s.state_id
,
    cs.congstatus_id
,
    cs.conglevel_id
,
    cs.congstage_id
,
    cs.congoutcome_id
,
    cs.congofficialtitle_id
,
    cs.congtitle_id
,
    cs.conghighlight_id
,
    cs.congsynopsis_id
,
    cs.congcategory_id
,
    cs.congofficialsynopsis_id
,
    cs.congtext_id
,
    c.release_id AS congress_release_id
,
    cs.release_id AS congstatus_release_id
,
    c.billnumber
,
    s.name AS statename
,
    c.url
,
    cs.rank
,
    cs.statusdate
,
    cs.rollnumber
,
    cl.name AS level
,
    cst.name AS stage
,
    cot.outcometext AS outcome
,
    cs.yea
,
    cs.nay
,
    cs.voicevote
,
    cs.keyvote
,
    cncong.note AS congress_note
,
    cn.note AS congstatus_note
,
    cft.officialtitle
,
    cti.title
,
    chl.highlight
,
    csy.synopsis
,
    cosy.officialsynopsis
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (
                                                           (
                                                                 (
                                                                       (
                                                                             (
                                                                                   (
                                                                                         (congress c
     
                                                                                            JOIN state s 
                                                                                           USING (state_id)
                                                                                         )
     
                                                                                      JOIN congtype ct 
                                                                                     USING (congtype_id)
                                                                                   )
     
                                                                                JOIN congstatus cs 
                                                                               USING (congress_id)
                                                                             )
     
                                                                          JOIN congstage cst 
                                                                         USING (congstage_id)
                                                                       )
     
                                                                    JOIN conglevel cl 
                                                                   USING (conglevel_id)
                                                                 )
     
                                                         LEFT JOIN congtools ctools 
                                                             USING (conglevel_id
                                                                       , congtype_id
                                                                       , congstage_id
                                                                       , congoutcome_id
                                                                 )
                                                           )
     
                                                   LEFT JOIN congoutcometext cot 
                                                       USING (congoutcometext_id)
                                                     )
     
                                             LEFT JOIN congnote_status cns 
                                                    ON (
                                                           (cns.congstatus_id = cs.congstatus_id)
                                                     )
                                               )
     
                                       LEFT JOIN congnote cn 
                                              ON (
                                                     (cn.congnote_id = cns.congnote_id)
                                               )
                                         )
     
                                 LEFT JOIN congtitle cti 
                                     USING (congtitle_id)
                                   )
     
                           LEFT JOIN congofficialtitle cft 
                               USING (congofficialtitle_id)
                             )
     
                     LEFT JOIN conghighlight chl 
                         USING (conghighlight_id)
                       )
     
               LEFT JOIN congsynopsis csy 
                   USING (congsynopsis_id)
                 )
     
         LEFT JOIN congofficialsynopsis cosy 
             USING (congofficialsynopsis_id)
           )
     
   LEFT JOIN congnote_congress cnc 
          ON (
                 (cnc.congress_id = c.congress_id)
           )
     )
     
LEFT JOIN congnote cncong 
    ON (
           (cncong.congnote_id = cnc.congnote_id)
     )
);

Index - Schema public


View: v_congstatus_candidate

v_congstatus_candidate Structure
F-Key Name Type Description
congress_id integer
congtype_id character(1)
state_id character(2)
congstatus_id integer
conglevel_id character(1)
congstage_id smallint
congoutcome_id smallint
congofficialtitle_id integer
congtitle_id integer
conghighlight_id integer
congsynopsis_id integer
congcategory_id integer
congofficialsynopsis_id integer
office_candidate_id integer
candidate_id integer
congaction_id character(1)
congactiontype_id character(1)
congress_release_id smallint
congstatus_release_id smallint
billnumber character varying
statename character varying
url character varying
rank smallint
statusdate date
rollnumber smallint
level character varying
stage character varying
outcome character varying
yea smallint
nay smallint
voicevote boolean
congress_note character varying
congstatus_note character varying
officialtitle text
title character varying
highlight text
synopsis text
officialsynopsis text
congaction character varying
congactioncode character varying
SELECT c.congress_id
,
    ct.congtype_id
,
    s.state_id
,
    cs.congstatus_id
,
    cs.conglevel_id
,
    cs.congstage_id
,
    cs.congoutcome_id
,
    cs.congofficialtitle_id
,
    cs.congtitle_id
,
    cs.conghighlight_id
,
    cs.congsynopsis_id
,
    cs.congcategory_id
,
    cs.congofficialsynopsis_id
,
    csc.office_candidate_id
,
    oc.candidate_id
,
    csc.congaction_id
,
    cat.congactiontype_id
,
    c.release_id AS congress_release_id
,
    cs.release_id AS congstatus_release_id
,
    c.billnumber
,
    s.name AS statename
,
    c.url
,
    cs.rank
,
    cs.statusdate
,
    cs.rollnumber
,
    cl.name AS level
,
    cst.name AS stage
,
    cot.outcometext AS outcome
,
    cs.yea
,
    cs.nay
,
    cs.voicevote
,
    cncong.note AS congress_note
,
    cn.note AS congstatus_note
,
    cft.officialtitle
,
    cti.title
,
    chl.highlight
,
    csy.synopsis
,
    cosy.officialsynopsis
,
    cat.name AS congaction
,
    cat.code AS congactioncode
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (
                                                           (
                                                                 (
                                                                       (
                                                                             (
                                                                                   (
                                                                                         (
                                                                                               (
                                                                                                     (
                                                                                                           (congress c
     
                                                                                                              JOIN state s 
                                                                                                             USING (state_id)
                                                                                                           )
     
                                                                                                        JOIN congtype ct 
                                                                                                       USING (congtype_id)
                                                                                                     )
     
                                                                                                  JOIN congstatus cs 
                                                                                                 USING (congress_id)
                                                                                               )
     
                                                                                            JOIN congstage cst 
                                                                                           USING (congstage_id)
                                                                                         )
     
                                                                                      JOIN conglevel cl 
                                                                                     USING (conglevel_id)
                                                                                   )
     
                                                                                JOIN congstatus_candidate csc 
                                                                               USING (congstatus_id)
                                                                             )
     
                                                                          JOIN office_candidate oc 
                                                                         USING (office_candidate_id)
                                                                       )
     
                                                                    JOIN congaction cat 
                                                                   USING (congaction_id)
                                                                 )
     
                                                         LEFT JOIN congtools ctools 
                                                             USING (conglevel_id
                                                                       , congtype_id
                                                                       , congstage_id
                                                                       , congoutcome_id
                                                                 )
                                                           )
     
                                                   LEFT JOIN congoutcometext cot 
                                                       USING (congoutcometext_id)
                                                     )
     
                                             LEFT JOIN congtitle cti 
                                                 USING (congtitle_id)
                                               )
     
                                       LEFT JOIN congnote_status cns 
                                              ON (
                                                     (cns.congstatus_id = cs.congstatus_id)
                                               )
                                         )
     
                                 LEFT JOIN congnote cn 
                                        ON (
                                               (cn.congnote_id = cns.congnote_id)
                                         )
                                   )
     
                           LEFT JOIN congofficialtitle cft 
                               USING (congofficialtitle_id)
                             )
     
                     LEFT JOIN conghighlight chl 
                         USING (conghighlight_id)
                       )
     
               LEFT JOIN congsynopsis csy 
                   USING (congsynopsis_id)
                 )
     
         LEFT JOIN congofficialsynopsis cosy 
             USING (congofficialsynopsis_id)
           )
     
   LEFT JOIN congnote_congress cnc 
          ON (
                 (cnc.congress_id = c.congress_id)
           )
     )
     
LEFT JOIN congnote cncong 
    ON (
           (cncong.congnote_id = cnc.congnote_id)
     )
);

Index - Schema public


View: v_congstatusparty

v_congstatusparty Structure
F-Key Name Type Description
tally bigint
party_name text
congstatus_id integer
congress_id integer
action character varying
conglevel_id character(1)
npatrow_id integer
release_id smallint
yea smallint
nay smallint
 WITH party_avg AS 
(
         
SELECT count
     (sub_part.party_name) AS tally
     ,
            sub_part.party_name
     ,
            sub_part.congstatus_id
     ,
            sub_part.congress_id
     ,
            sub_part.action
     ,
            sub_part.conglevel_id
     ,
            sub_part.npatrow_id
     ,
            sub_part.release_id
     ,
            sub_part.yea
     ,
            sub_part.nay
           
  FROM (
      SELECT
                        CASE
                            WHEN 
           (ocp.party_id = ANY 
                 (ARRAY[331
                       , 9
                       , 8
                       , 299]
                 )
           ) THEN 'Democratic'::text
                            WHEN 
           (ocp.party_id = 56) THEN 'Republican'::text
                            ELSE NULL::text
                        END AS party_name
           ,
                    ca.name AS action
           ,
                    nrs.congstatus_id
           ,
                    cs.congress_id
           ,
                    cs.conglevel_id
           ,
                    nrs.npatrow_id
           ,
                    cs.release_id
           ,
                    cs.yea
           ,
                    cs.nay
                   
        FROM (
                 (
                       (
                             (
                                   (npatrow_congstatus nrs
                     
                                      JOIN congstatus_candidate cc 
                                     USING (congstatus_id)
                                   )
                     
                                JOIN office_candidate oc 
                               USING (office_candidate_id)
                             )
                     
                          JOIN congstatus cs 
                         USING (congstatus_id)
                       )
                     
                    JOIN congaction ca 
                   USING (congaction_id)
                 )
                     
              JOIN office_candidate_party ocp 
             USING (office_candidate_id)
           )
                  
       WHERE (
                 (ocp.party_id = ANY 
                       (ARRAY[331
                             , 9
                             , 8
                             , 299
                             , 56]
                       )
                 )
               AND (ca.congactiontype_id = 'V'::bpchar)
           )
     ) sub_part
          
GROUP BY sub_part.party_name
     , sub_part.congstatus_id
     , sub_part.congress_id
     , sub_part.action
     , sub_part.conglevel_id
     , sub_part.npatrow_id
     , sub_part.release_id
     , sub_part.yea
     , sub_part.nay
        
)
 
SELECT p1.tally
,
    p1.party_name
,
    p1.congstatus_id
,
    p1.congress_id
,
    p1.action
,
    p1.conglevel_id
,
    p1.npatrow_id
,
    p1.release_id
,
    p1.yea
,
    p1.nay
   
FROM (party_avg p1
     
LEFT JOIN party_avg p2 
    ON (
           (
                 (
                       (
                             (p1.tally < p2.tally)
                           AND (p1.party_name = p2.party_name)
                       )
                     AND (
                             (p1.action)::text <> 
                             (p2.action)::text
                       )
                 )
               AND (p1.congstatus_id = p2.congstatus_id)
           )
     )
)
  
WHERE (p2.congstatus_id IS NULL)
  
ORDER BY p1.congstatus_id
, p1.npatrow_id
, p1.tally DESC;

Index - Schema public


View: v_election

v_election Structure
F-Key Name Type Description
election_id integer
state_id character(2)
election_electionstage_id integer
election_electionstage_state_id character(2)
officetype_id character(1)
officelevel_id character(1)
electionstage_id character(1)
party_id integer
special boolean
election_electionstage_release_id smallint
candidaterelease_id smallint
npatrelease_id smallint
resultrelease_id smallint
npatmailed boolean
electionstage character varying
electionyear smallint
electiondate date
filingdeadline date
majorfiling date
independentfiling date
thirdfiling date
writeinfiling date
electionname text
officetype_rank smallint
officelevel_rank smallint
electionstage_rank smallint
SELECT e.election_id
,
    e.state_id
,
    es.election_electionstage_id
,
    es.state_id AS election_electionstage_state_id
,
    e.officetype_id
,
    ol.officelevel_id
,
    est.electionstage_id
,
    es.party_id
,
    e.special
,
    es.release_id AS election_electionstage_release_id
,
    es.candidaterelease_id
,
    es.npatrelease_id
,
    es.resultrelease_id
,
    es.npatmailed
,
    est.name AS electionstage
,
    e.electionyear
,
    es.electiondate
,
    es.filingdeadline
,
    es.majorfiling
,
    es.independentfiling
,
    es.thirdfiling
,
    es.writeinfiling
,
    
(
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (e.electionyear)::text || ' '::text
                                               ) ||
        CASE e.state_id
            WHEN 'NA'::bpchar THEN ''::text
            ELSE 
                                               (
                                                     (s.name)::text || ' '::text
                                               )
        END
                                         ) || 
                                         (o.name)::text
                                   ) ||
        CASE
            WHEN e.special THEN ' Special'::text
            ELSE ''::text
        END
                             ) ||
        CASE
            WHEN 
                             (
                                   (count
                                         (ed.election_id) = 1
                                   )
                                 AND (
                                         (est.name)::text ~ 'Primary'::text
                                   )
                             ) THEN 
                             (
      ' Primary Election, District '::text || min
                                   (
                                         (dn.name)::text
                                   )
                             )
            WHEN 
                             (
                                   (
                                         (count
                                               (ed.election_id) <> 1
                                         )
                                       AND e.special
                                   )
                                 AND (
                                         (est.name)::text ~ 'Primary'::text
                                   )
                             ) THEN ' Primary Election '::text
            WHEN 
                             (
                                   (count
                                         (ed.election_id) = 1
                                   )
                                 AND (
                                         (est.name)::text !~ 'Primary'::text
                                   )
                             ) THEN 
                             (
              ' Election, District '::text || min
                                   (
                                         (dn.name)::text
                                   )
                             )
            WHEN 
                             (
                                   (
                                         (count
                                               (ed.election_id) <> 1
                                         )
                                       AND e.special
                                   )
                                 AND (
                                         (est.name)::text !~ 'Primary'::text
                                   )
                             ) THEN ' Election '::text
            ELSE ''::text
        END
                       ) ||
        CASE
            WHEN 
                       (
                             (
                                   (e.officetype_id = 'P'::bpchar)
                                 AND (es.state_id <> 'NA'::bpchar)
                             )
                           AND (est.electionstage_id = 'P'::bpchar)
                       ) THEN 
                       (
                             (
                                   (
                                         (
                                   ' Election, '::text || 
                                               (s.name)::text
                                         ) || ' '::text
                                   ) ||
            CASE
                WHEN 
                                   (
                                         (p.name)::text = 'Democrat'::text
                                   ) THEN 'Democractic '::text
                WHEN 
                                   (p.name IS NOT NULL) THEN 
                                   (
                                         (p.name)::text || ' '::text
                                   )
                WHEN 
                                   (
                                         (p.name IS NULL)
                                       AND (e.officetype_id = 'P'::bpchar)
                                   ) THEN 'Third Party '::text
                ELSE ''::text
            END
                             ) || 
                             (est.name)::text
                       )
            ELSE ''::text
        END
                 ) || 
                 (
        CASE
            WHEN 
                       (
                             (NOT 
                                   (
                                         (e.officetype_id = 'P'::bpchar)
                                       AND (
                                               (est.name)::text ~ 'Primary'::text
                                         )
                                   )
                             )
                           AND (NOT e.special)
                       ) THEN 
                       (
                             (' '::text || 
                                   (est.name)::text
                             )
                       )::character varying
            ELSE ''::character varying
        END
                 )::text
           ) ||
        CASE
            WHEN 
           (
                 (NOT e.special)
               AND (NOT 
                       (
                             (e.officetype_id = 'P'::bpchar)
                           AND (
                                   (est.name)::text ~ 'Primary'::text
                             )
                       )
                 )
           ) THEN ' Election'::text
            ELSE ''::text
        END
     ) ||
        CASE
            WHEN 
     (
           (
                 (e.officetype_id = 'P'::bpchar)
               AND (es.state_id <> 'NA'::bpchar)
           )
         AND (est.electionstage_id = 'G'::bpchar)
     ) THEN 
     (
        ', '::text || 
           (s.name)::text
     )
            ELSE ''::text
        END
) AS electionname
,
    o.rank AS officetype_rank
,
    ol.rank AS officelevel_rank
,
    est.rank AS electionstage_rank
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (election e
     
                                            JOIN election_electionstage es 
                                           USING (election_id)
                                         )
     
                                      JOIN electionstage est 
                                     USING (electionstage_id)
                                   )
     
                                JOIN state s 
                                  ON (
                                         (es.state_id = s.state_id)
                                   )
                             )
     
                          JOIN officetype o 
                         USING (officetype_id)
                       )
     
                    JOIN officelevel ol 
                   USING (officelevel_id)
                 )
     
         LEFT JOIN party p 
             USING (party_id)
           )
     
   LEFT JOIN election_districtname ed 
       USING (election_id)
     )
     
LEFT JOIN districtname dn 
 USING (districtname_id)
)
  
GROUP BY e.election_id
, es.election_electionstage_id
, e.electionyear
, e.state_id
, s.name
, o.name
, e.special
, est.electionstage_id
, est.name
, e.officetype_id
, es.release_id
, es.candidaterelease_id
, es.npatrelease_id
, es.resultrelease_id
, es.npatmailed
, es.electiondate
, es.filingdeadline
, es.state_id
, ol.officelevel_id
, o.rank
, ol.rank
, est.rank
, p.name
, es.party_id
, es.majorfiling
, es.independentfiling
, es.thirdfiling
, es.writeinfiling;

Index - Schema public


View: v_election_candidate

v_election_candidate Structure
F-Key Name Type Description
election_candidate_id integer
election_id integer
electionstage_id character(1)
election_electionstage_id integer
candidate_id integer
electionstage_candidate_id integer
office_id smallint
officetype_id character(1)
state_id character(2)
election_electionstage_state_id character(2)
districtname_id smallint
electioncandidatestatus_id smallint
electionstage_release_id smallint
candidaterelease_id smallint
npatrelease_id smallint
resultrelease_id smallint
npatmailed boolean
state character varying
office character varying
officecode character varying
officerank smallint
officetitle character varying
officeshorttitle character varying
districtname character varying
districtrank smallint
party_id integer
party character varying
ballotname character varying
electionyear smallint
electionstage character varying
officetype character varying
status character varying
lowername character varying
ushousename character varying
electiondate date
SELECT ec.election_candidate_id
,
    ec.election_id
,
    es.electionstage_id
,
    es.election_electionstage_id
,
    ec.candidate_id
,
    esc.electionstage_candidate_id
,
    ec.office_id
,
    o.officetype_id
,
    ec.state_id
,
    es.state_id AS election_electionstage_state_id
,
    ec.districtname_id
,
    ecs.electioncandidatestatus_id
,
    es.release_id AS electionstage_release_id
,
    es.candidaterelease_id
,
    es.npatrelease_id
,
    es.resultrelease_id
,
    es.npatmailed
,
    s.name AS state
,
    o.name AS office
,
    o.code AS officecode
,
    o.rank AS officerank
,
    o.title AS officetitle
,
    o.shorttitle AS officeshorttitle
,
    dn.name AS districtname
,
    dn.rank AS districtrank
,
    ecp.party_id
,
    pvs_electionstage_party
(esc.electionstage_candidate_id) AS party
,
    ec.ballotname
,
    e.electionyear
,
    est.name AS electionstage
,
    ot.name AS officetype
,
    ecs.name AS status
,
    s.lowername
,
    s.ushousename
,
    es.electiondate
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (election_candidate ec
     
                                                        JOIN election e 
                                                          ON (
                                                                 (e.election_id = ec.election_id)
                                                           )
                                                     )
     
                                                  JOIN state s 
                                                    ON (
                                                           (s.state_id = ec.state_id)
                                                     )
                                               )
     
                                            JOIN office o 
                                              ON (
                                                     (ec.office_id = o.office_id)
                                               )
                                         )
     
                                      JOIN officetype ot 
                                        ON (
                                               (o.officetype_id = ot.officetype_id)
                                         )
                                   )
     
                                JOIN election_electionstage es 
                                  ON (
                                         (es.election_id = ec.election_id)
                                   )
                             )
     
                          JOIN electionstage est 
                            ON (
                                   (es.electionstage_id = est.electionstage_id)
                             )
                       )
     
                    JOIN electionstage_candidate esc 
                   USING (election_candidate_id
                             , election_electionstage_id
                       )
                 )
     
              JOIN electioncandidatestatus ecs 
                ON (
                       (ecs.electioncandidatestatus_id = esc.electioncandidatestatus_id)
                 )
           )
     
   LEFT JOIN electionstage_candidate_party ecp 
          ON (
                 (ecp.electionstage_candidate_id = esc.electionstage_candidate_id)
           )
     )
     
LEFT JOIN districtname dn 
    ON (
           (ec.districtname_id = dn.districtname_id)
     )
);

Index - Schema public


View: v_election_current

v_election_current Structure
F-Key Name Type Description
electionyear smallint
officetype character varying
officetype_id character(1)
special boolean
rank smallint
latest_stage text
active_stages character varying[]
contests bigint
states character(2)[]
total_candidates bigint
 WITH election_current AS 
(
         
SELECT es.name AS stage
     ,
            e_1.electionyear
     ,
            ot.name AS officetype
     ,
            ot.officetype_id
     ,
            e_1.special
     ,
            ot.rank
     ,
            ees.election_electionstage_id
     ,
            e_1.state_id
     ,
            e_1.election_id
     ,
            ees.electiondate
           
  FROM (
           (
                 (election e_1
             
                    JOIN election_electionstage ees 
                   USING (election_id
                             , state_id
                       )
                 )
             
              JOIN officetype ot 
             USING (officetype_id)
           )
             
        JOIN electionstage es 
       USING (electionstage_id)
     )
          
 WHERE (
           (
                 (ees.release_id >= 2)
               AND (ees.candidaterelease_id >= 2)
           )
         AND (e_1.electionyear >= 2012)
     )
        
)
 
SELECT DISTINCT e.electionyear
,
    e.officetype
,
    e.officetype_id
,
    e.special
,
    e.rank
,
    
(
SELECT (
           (
                 (
                       (ec_sub.stage)::text || 
                    ' ('::text) ||
                CASE
                    WHEN 
                       (e.electiondate < now
                             ()
                       ) THEN 'Complete'::text
                    ELSE 
                       (e.electiondate)::text
                END
                 ) || 
         ')'::text
     )
           
  FROM election_current ec_sub
          
 WHERE (
           (
                 (
                       (ec_sub.officetype_id = e.officetype_id)
                     AND (ec_sub.special = e.special)
                 )
               AND (ec_sub.electionyear = e.electionyear)
           )
         AND (ec_sub.electiondate >= now
                 ()
           )
     )
          
ORDER BY ec_sub.rank DESC
         LIMIT 1
) AS latest_stage
,
    ARRAY
(
SELECT ec_sub.stage
           
  FROM election_current ec_sub
          
 WHERE (
           (
                 (
                       (ec_sub.officetype_id = e.officetype_id)
                     AND (ec_sub.special = e.special)
                 )
               AND (ec_sub.electionyear = e.electionyear)
           )
         AND (ec_sub.electionyear = e.electionyear)
     )
          
ORDER BY ec_sub.rank
) AS active_stages
,
    contests.contests
,
    ARRAY
(
SELECT e_sub.state_id
           
  FROM election e_sub
          
 WHERE (
           (
                 (e_sub.officetype_id = e.officetype_id)
               AND (e_sub.electionyear = e.electionyear)
           )
         AND (e_sub.special = e.special)
     )
) AS states
,
    total_candidates.total_candidates
   
FROM (
     (election_current e
     
        JOIN (
            SELECT count
                 (DISTINCT 
                       (
                             (ec_sub.election_electionstage_id)::text || 
                             (d.district_id)::text
                       )
                 ) AS contests
                 ,
            ec_sub.officetype_id
                 ,
            ec_sub.electionyear
                 ,
            ec_sub.special
           
              FROM (
                       (
                             (election_current ec_sub
             
                                JOIN election_candidate ec 
                                  ON (
                                         (
                                               (ec_sub.electionyear >= 2012)
                                             AND (ec.election_id = ec.election_id)
                                         )
                                   )
                             )
             
                          JOIN electionstage_candidate esc 
                         USING (election_candidate_id
                                   , election_electionstage_id
                             )
                       )
             
               LEFT JOIN district d 
                      ON (
                             (
                                   (
                                         (d.districtname_id = ec.districtname_id)
                                       AND (d.state_id = ec.state_id)
                                   )
                                 AND (d.office_id = ec.office_id)
                             )
                       )
                 )
          
          GROUP BY ec_sub.officetype_id
                 , ec_sub.electionyear
                 , ec_sub.special
           ) contests 
          ON (
                 (
                       (
                             (contests.officetype_id = e.officetype_id)
                           AND (contests.electionyear = e.electionyear)
                       )
                     AND (contests.special = e.special)
                 )
           )
     )
     
  JOIN (
      SELECT count
           (DISTINCT ec.candidate_id) AS total_candidates
           ,
            e_sub.officetype_id
           ,
            e_sub.electionyear
           ,
            e_sub.special
           
        FROM (
                 (
                       (election_current e_sub
             
                          JOIN election_candidate ec 
                            ON (
                                   (
                                         (
                                               (e_sub.electionyear >= 2012)
                                             AND (e_sub.election_id = ec.election_id)
                                         )
                                       AND (e_sub.state_id = ec.state_id)
                                   )
                             )
                       )
             
                    JOIN electionstage_candidate esc 
                   USING (election_candidate_id)
                 )
             
              JOIN office o 
             USING (office_id)
           )
          
       WHERE (esc.electioncandidatestatus_id = ANY 
                 (ARRAY[2
                       , 8
                       , 9
                       , 11
                       , 12
                       , 13]
                 )
           )
          
    GROUP BY e_sub.officetype_id
           , e_sub.electionyear
           , e_sub.special
     ) total_candidates 
    ON (
           (
                 (
                       (total_candidates.officetype_id = e.officetype_id)
                     AND (total_candidates.electionyear = e.electionyear)
                 )
               AND (total_candidates.special = e.special)
           )
     )
)
  
GROUP BY e.electionyear
, e.officetype
, e.officetype_id
, e.special
, e.rank
, (
SELECT (
           (
                 (
                       (ec_sub.stage)::text || 
                    ' ('::text) ||
                CASE
                    WHEN 
                       (e.electiondate < now
                             ()
                       ) THEN 'Complete'::text
                    ELSE 
                       (e.electiondate)::text
                END
                 ) || 
         ')'::text
     )
           
  FROM election_current ec_sub
          
 WHERE (
           (
                 (
                       (ec_sub.officetype_id = e.officetype_id)
                     AND (ec_sub.special = e.special)
                 )
               AND (ec_sub.electionyear = e.electionyear)
           )
         AND (ec_sub.electiondate >= now
                 ()
           )
     )
          
ORDER BY ec_sub.rank DESC
         LIMIT 1
)
, contests.contests
, ARRAY
(
SELECT e_sub.state_id
           
  FROM election e_sub
          
 WHERE (
           (
                 (e_sub.officetype_id = e.officetype_id)
               AND (e_sub.electionyear = e.electionyear)
           )
         AND (e_sub.special = e.special)
     )
)
, e.election_id
, total_candidates.total_candidates
  
ORDER BY e.electionyear DESC
, e.rank;

Index - Schema public


View: v_electionname

v_electionname Structure
F-Key Name Type Description
election_id integer
electionname text
SELECT e.election_id
,
    
(
     (
           (
        CASE e.state_id
            WHEN 'NA'::bpchar THEN ''::text
            ELSE 
                 (
                       (s.name)::text || ' '::text
                 )
        END || 
                 (o.name)::text
           ) ||
        CASE
            WHEN 
           (e.special 
               AND (count
                       (e.election_id) > 1
                 )
           ) THEN ' Special Multiple Districts'::text
            WHEN 
           (e.special 
               AND (count
                       (e.election_id) = 1
                 )
           ) THEN 
           (
                 (' Special District '::text || min
                       (
                             (dn.name)::text
                       )
                 ) || ' '::text
           )
            ELSE ' '::text
        END
     ) || 
     (e.electionyear)::text
) AS electionname
   
FROM (
     (
           (
                 (
                       (
                             (election e
     
                                JOIN election_electionstage es 
                               USING (election_id)
                             )
     
                          JOIN electionstage est 
                         USING (electionstage_id)
                       )
     
                    JOIN state s 
                      ON (
                             (e.state_id = s.state_id)
                       )
                 )
     
              JOIN officetype o 
             USING (officetype_id)
           )
     
   LEFT JOIN election_districtname election_district 
       USING (election_id)
     )
     
LEFT JOIN districtname dn 
 USING (districtname_id)
)
  
GROUP BY e.election_id
, e.electionyear
, e.state_id
, s.name
, o.name
, e.special;

Index - Schema public


View: v_featured_items

v_featured_items Structure
F-Key Name Type Description
featured_id integer
data_type text
content_id integer
dated timestamp without time zone
title text
description text
release_id integer
SELECT ft.featured_id
,
    'K'::text AS data_type
,
    cs.congstatus_id AS content_id
,
    cs.statusdate AS dated
,
    btrim
(
     (
           (
                 (c.billnumber)::text || ' - '::text
           ) || 
           (ct.title)::text
     )
) AS title
,
    csyn.synopsis AS description
,
    cs.release_id
   
FROM (
     (
           (
                 (
                       (featured_tag ft
     
                          JOIN congstatus_tag cstag 
                         USING (tag_id)
                       )
     
                    JOIN congstatus cs 
                   USING (congstatus_id)
                 )
     
              JOIN congress c 
             USING (congress_id)
           )
     
   LEFT JOIN congtitle ct 
       USING (congtitle_id)
     )
     
LEFT JOIN congsynopsis csyn 
 USING (congsynopsis_id)
)
UNION
 
SELECT ft.featured_id
,
    'M'::text AS data_type
,
    m.measure_id AS content_id
,
    m.electiondate AS dated
,
    btrim
(
     (
           (
                 (
                       (
                             (m.state_id)::text || ' '::text
                       ) || 
                       (m.code)::text
                 ) || ' - '::text
           ) || 
           (m.title)::text
     )
) AS title
,
    m.summary AS description
,
    2 AS release_id
   
FROM (
     (featured_tag ft
     
        JOIN measure_tag mt 
       USING (tag_id)
     )
     
  JOIN measure m 
 USING (measure_id)
)
UNION
 
SELECT ft.featured_id
,
    'S'::text AS data_type
,
    s.speech_id AS content_id
,
    s.speechdate AS dated
,
    s.title
,
    COALESCE
(s.summary
     , s.speechtext
) AS description
,
    s.release_id
   
FROM (
     (featured_tag ft
     
        JOIN speech_tag st 
       USING (tag_id)
     )
     
  JOIN speech s 
 USING (speech_id)
)
  
WHERE (s.speechdate IS NOT NULL)
UNION
 
SELECT ft.featured_id
,
    'R'::text AS data_type
,
    r.rating_id AS content_id
,
    r.created AS dated
,
    btrim
(
     (
           (
                 (sig.name)::text || ' '::text
           ) || 
           (r.name)::text
     )
) AS title
,
    r.description
,
    r.release_id
   
FROM (
     (
           (featured_tag ft
     
              JOIN rating_tag rt 
             USING (tag_id)
           )
     
        JOIN rating r 
       USING (rating_id)
     )
     
  JOIN sig sig 
 USING (sig_id)
)
  
WHERE (sig.release_id >= r.release_id)
  
ORDER BY 4 DESC
, 3 DESC;

Index - Schema public


View: v_highest_electionstage_id

v_highest_electionstage_id Structure
F-Key Name Type Description
election_candidate_id integer
electionstage_id character(1)
SELECT DISTINCT esc.election_candidate_id
,
    est.electionstage_id
   
FROM (
     (
           (
                 (electionstage_candidate esc
     
                    JOIN election_electionstage ees 
                   USING (election_electionstage_id)
                 )
     
              JOIN electionstage est 
             USING (electionstage_id)
           )
     
   LEFT JOIN electionstage_candidate esc_more 
          ON (
                 (
                       (esc.election_candidate_id = esc_more.election_candidate_id)
                     AND (esc.electionstage_candidate_id <> esc_more.electionstage_candidate_id)
                 )
           )
     )
     
LEFT JOIN election_electionstage ees_more 
    ON (
           (
                 (ees_more.election_electionstage_id = esc_more.election_electionstage_id)
               AND (ees.electiondate < ees_more.electiondate)
           )
     )
)
  
WHERE (
     (
           (esc.election_electionstage_id = ees.election_electionstage_id)
         AND (ees.election_id = 810)
     )
   AND (ees_more.election_id IS NULL)
)
  
GROUP BY esc.election_candidate_id
, est.electionstage_id
 
HAVING (count
     (*) < 2
);

Index - Schema public


View: v_highest_electionstage_id_all

v_highest_electionstage_id_all Structure
F-Key Name Type Description
election_candidate_id integer
electionstage_id character(1)
election_id integer
SELECT DISTINCT esc.election_candidate_id
,
    est.electionstage_id
,
    ees.election_id
   
FROM (
     (
           (
                 (electionstage_candidate esc
     
                    JOIN election_electionstage ees 
                   USING (election_electionstage_id)
                 )
     
              JOIN electionstage est 
             USING (electionstage_id)
           )
     
   LEFT JOIN electionstage_candidate esc_more 
          ON (
                 (
                       (esc.election_candidate_id = esc_more.election_candidate_id)
                     AND (esc.electionstage_candidate_id <> esc_more.electionstage_candidate_id)
                 )
           )
     )
     
LEFT JOIN election_electionstage ees_more 
    ON (
           (
                 (ees_more.election_electionstage_id = esc_more.election_electionstage_id)
               AND (ees.electiondate < ees_more.electiondate)
           )
     )
)
  
WHERE (
     (esc.election_electionstage_id = ees.election_electionstage_id)
   AND (ees_more.election_id IS NULL)
)
  
GROUP BY esc.election_candidate_id
, est.electionstage_id
, ees.election_id
 
HAVING (count
     (*) < 2
);

Index - Schema public


View: v_highest_stage

v_highest_stage Structure
F-Key Name Type Description
candidate_id integer
status character varying
election name
higheststage character varying
SELECT c.candidate_id
,
    ecs.name AS status
,
    
(e.*)::name AS election
,
    est.name AS higheststage
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (candidate c
     
                                            JOIN election_candidate ec 
                                           USING (candidate_id)
                                         )
     
                                      JOIN electionstage_candidate esc 
                                     USING (election_candidate_id)
                                   )
     
                                JOIN election e 
                               USING (election_id)
                             )
     
                          JOIN election_electionstage ees 
                         USING (election_id)
                       )
     
                    JOIN electionstage est 
                   USING (electionstage_id)
                 )
     
              JOIN electioncandidatestatus ecs 
             USING (electioncandidatestatus_id)
           )
     
   LEFT JOIN electionstage_candidate esc_more 
          ON (
                 (
                       (esc.election_candidate_id = esc_more.election_candidate_id)
                     AND (esc.electionstage_candidate_id <> esc_more.electionstage_candidate_id)
                 )
           )
     )
     
LEFT JOIN election_electionstage ees_more 
    ON (
           (
                 (ees_more.election_electionstage_id = esc_more.election_electionstage_id)
               AND (ees.electiondate < ees_more.electiondate)
           )
     )
)
  
WHERE (
     (
           (esc.election_electionstage_id = ees.election_electionstage_id)
         AND (e.election_id = 810)
     )
   AND (ees_more.election_id IS NULL)
)
  
GROUP BY c.candidate_id
, ecs.name
, (e.*)::name
, est.name
 
HAVING (count
     (*) < 2
);

Index - Schema public


View: v_leadership

v_leadership Structure
F-Key Name Type Description
leadership_id smallint
state_id character(2)
office_id smallint
leadership character varying
leadershiprank smallint
SELECT l.leadership_id
,
    ls.state_id
,
    lso.office_id
,
    l.name AS leadership
,
    l.rank AS leadershiprank
   
FROM (
     (leadership l
     
        JOIN leadership_state ls 
       USING (leadership_id)
     )
     
  JOIN leadership_state_office lso 
 USING (leadership_state_id)
)
  
ORDER BY l.rank;

Index - Schema public


View: v_name_slug

v_name_slug Structure
F-Key Name Type Description
candidate_id integer
slug text
SELECT c.candidate_id
,
    
(
     (lower
           (
                 (
        CASE
            WHEN 
                       (c.candidatepreferredname_id = 'N'::bpchar) THEN c.nickname
            WHEN 
                       (c.candidatepreferredname_id = 'M'::bpchar) THEN c.middlename
            ELSE c.firstname
        END
                 )::text
           ) || '-'::text
     ) || lower
     (
           (
                 (
                       (c.lastname)::text || '-'::text
                 ) || 
                 (c.suffix)::text
           )
     )
) AS slug
   
FROM candidate c;

Index - Schema public


View: v_npat

v_npat Structure
F-Key Name Type Description
npatmatrix_id integer
npatform_id integer
npatrow_id integer
npatrowtype_id integer
npatoptiongroup_id integer
path ltree
open boolean
npatrow_text text
nm_rank smallint
wordlimit smallint
profile boolean
SELECT nm.npatmatrix_id
,
    nm.npatform_id
,
    nm.npatrow_id
,
    nr.npatrowtype_id
,
    nrt.npatoptiongroup_id
,
    nm.path
,
    nrt.open
,
    nrtext.rowtext AS npatrow_text
,
    nm.rank AS nm_rank
,
    nr.wordlimit
,
    nr.profile
   
FROM (
     (
           (npatmatrix nm
     
              JOIN npatrow nr 
             USING (npatrow_id)
           )
     
        JOIN npatrowtype nrt 
       USING (npatrowtype_id)
     )
     
  JOIN npatrowtext nrtext 
 USING (npatrowtext_id)
);

Index - Schema public


View: v_npatanswer_count

v_npatanswer_count Structure
F-Key Name Type Description
count bigint
type text
SELECT count
(*) AS count
,
    'uncategorized'::text AS type
   
FROM npatanswerlocking sl
  
WHERE (
     (NOT 
           (sl.committed 
               AND (
                       (sl.accessedby)::text <> 'auto'::text
                 )
           )
     )
    OR (NOT 
           (EXISTS 
                 (
                  SELECT 1
           
                    FROM npatanswer_category sc
          
                   WHERE (sc.npatanswer_id = sl.npatanswer_id)
                 )
           )
     )
)
UNION
 
SELECT count
(*) AS count
,
    
'uncategorized (current federal candidates/officials)'::text AS type
   
FROM   npatanswer s
  
WHERE  (
(
     (btrim
           (s.answertext) <> ''::text
     )
   AND (NOT 
           (EXISTS 
                 (
                  SELECT 1
           
                    FROM npatanswer_category sc
          
                   WHERE (sc.npatanswer_id = s.npatanswer_id)
                 )
           )
     )
)
AND (
     (EXISTS 
           (
            SELECT 1
           
              FROM (
                       (
                             (
                                   (
                                         (office_candidate oc
             
                                            JOIN office o 
                                           USING (office_id)
                                         )
             
                                      JOIN officetype ot 
                                     USING (officetype_id)
                                   )
             
                                JOIN election_candidate 
                               USING (candidate_id)
                             )
             
                          JOIN npatcandidate sc 
                         USING (election_candidate_id)
                       )
             
                    JOIN npatanswer na 
                   USING (npatcandidate_id)
                 )
          
             WHERE (
                       (
                             (ot.officelevel_id = 'F'::bpchar)
                           AND (oc.officecandidatestatus_id = 1)
                       )
                     AND (s.npatanswer_id = na.npatanswer_id)
                 )
           )
     )
    OR (EXISTS 
           (
            SELECT 1
           
              FROM (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (election_candidate ec
             
                                                        JOIN election e 
                                                       USING (election_id)
                                                     )
             
                                                  JOIN office o 
                                                 USING (office_id)
                                               )
             
                                            JOIN officetype ot 
                                              ON (
                                                     (o.officetype_id = ot.officetype_id)
                                               )
                                         )
             
                                      JOIN election_electionstage ees 
                                     USING (election_id)
                                   )
             
                                JOIN npatcandidate sc 
                               USING (election_candidate_id)
                             )
             
                          JOIN npatanswer na 
                         USING (npatcandidate_id)
                       )
             
                    JOIN electionstage_candidate esc 
                   USING (election_candidate_id
                             , election_electionstage_id
                       )
                 )
          
             WHERE (
                       (
                             (ot.officetype_id = 'F'::bpchar)
                           AND (ees.electiondate > now
                                   ()
                             )
                       )
                     AND (s.npatanswer_id = na.npatanswer_id)
                 )
           )
     )
)
)     
  
ORDER BY 2;

Index - Schema public


View: v_office_candidate

v_office_candidate Structure
F-Key Name Type Description
office_candidate_id integer
candidate_id integer
office_id smallint
officetype_id character(1)
state_id character(2)
districtname_id smallint
officecandidatestatus_id smallint
officelevel_id character(1)
party_id integer
state character varying
office character varying
officecode character varying
officerank smallint
officetype character varying
districtname character varying
districtrank smallint
party character varying
officetitle character varying
officeshorttitle character varying
status character varying
firstelect character varying
lastelect character varying
nextelect character varying
termstart flexdate
termend flexdate
lowername character varying
ushousename character varying
uscircuit character varying
SELECT oc.office_candidate_id
,
    oc.candidate_id
,
    oc.office_id
,
    o.officetype_id
,
    oc.state_id
,
    oc.districtname_id
,
    oc.officecandidatestatus_id
,
    ot.officelevel_id
,
    p.party_id
,
    s.name AS state
,
    o.name AS office
,
    o.code AS officecode
,
    o.rank AS officerank
,
    ot.name AS officetype
,
    dn.name AS districtname
,
    dn.rank AS districtrank
,
    p.name AS party
,
    o.title AS officetitle
,
    o.shorttitle AS officeshorttitle
,
    ocs.name AS status
,
    oc.firstelect
,
    oc.lastelect
,
    oc.nextelect
,
    oc.termstart
,
    oc.termend
,
    s.lowername
,
    s.ushousename
,
    s.uscircuit
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (office_candidate oc
     
                                      JOIN office o 
                                        ON (
                                               (o.office_id = oc.office_id)
                                         )
                                   )
     
                                JOIN officetype ot 
                                  ON (
                                         (ot.officetype_id = o.officetype_id)
                                   )
                             )
     
                          JOIN state s 
                            ON (
                                   (s.state_id = oc.state_id)
                             )
                       )
     
                    JOIN officecandidatestatus ocs 
                   USING (officecandidatestatus_id)
                 )
     
         LEFT JOIN districtname dn 
                ON (
                       (dn.districtname_id = oc.districtname_id)
                 )
           )
     
   LEFT JOIN office_candidate_party ocp 
          ON (
                 (oc.office_candidate_id = ocp.office_candidate_id)
           )
     )
     
LEFT JOIN party p 
    ON (
           (p.party_id = ocp.party_id)
     )
);

Index - Schema public


View: v_party_average

v_party_average Structure
F-Key Name Type Description
avg numeric
party_group text
SELECT avg
(rc.rating) AS avg
,
    c.party_group
   
FROM (
     (
      SELECT rc_1.candidate_id
           ,
                CASE
                    WHEN r.usesigrating THEN
                    CASE
                        WHEN 
           (btrim
                 (
                       (rc_1.sig_rating)::text
                 ) ~ '^\d+$'::text
           ) THEN 
           (btrim
                 (
                       (rc_1.sig_rating)::text
                 )
           )::numeric
                        ELSE NULL::numeric
                    END
                    WHEN 
           (btrim
                 (
                       (rc_1.our_rating)::text
                 ) ~ '^\d+$'::text
           ) THEN 
           (btrim
                 (
                       (rc_1.our_rating)::text
                 )
           )::numeric
                    ELSE NULL::numeric
                END AS rating
           
        FROM (rating_candidate rc_1
             
              JOIN rating r 
                ON (
                       (
                             (rc_1.rating_id = r.rating_id)
                           AND (r.sig_id = 1016)
                       )
                 )
           )
     ) rc
     
  JOIN (
      SELECT DISTINCT
                CASE
                    WHEN 
           (ecp.party_id = ANY 
                 (ARRAY[331
                       , 9
                       , 8
                       , 299]
                 )
           ) THEN 'Democratic'::text
                    WHEN 
           (ecp.party_id = 56) THEN 'Republican'::text
                    ELSE NULL::text
                END AS party_group
           ,
            rc_1.candidate_id
           
        FROM (
                 (
                       (
                             (
                                   (
                                         (
                                          SELECT DISTINCT rc_2.candidate_id
                   
                                            FROM (rating_candidate rc_2
                     
                                                  JOIN rating r 
                                                    ON (
                                                           (
                                                                 (rc_2.rating_id = r.rating_id)
                                                               AND (r.sig_id = 1016)
                                                           )
                                                     )
                                               )
                                         ) rc_1
             
                                      JOIN election_candidate ec 
                                        ON (
                                               (ec.candidate_id = rc_1.candidate_id)
                                         )
                                   )
             
                                JOIN election e 
                                  ON (
                                         (
                                               (e.election_id = ec.election_id)
                                             AND (e.electionyear = 2010)
                                         )
                                   )
                             )
             
                          JOIN electionstage_candidate esc 
                            ON (
                                   (esc.election_candidate_id = ec.election_candidate_id)
                             )
                       )
             
                    JOIN electionstage_candidate_party ecp 
                      ON (
                             (ecp.electionstage_candidate_id = esc.electionstage_candidate_id)
                       )
                 )
             
         LEFT JOIN office_candidate oc 
                ON (
                       (
                             (
                                   (oc.candidate_id = rc_1.candidate_id)
                                 AND (oc.office_id = ANY 
                                         (ARRAY[5
                                               , 6]
                                         )
                                   )
                             )
                           AND (oc.officecandidatestatus_id = 1)
                       )
                 )
           )
          
       WHERE (oc.candidate_id IS NULL)
        
       UNION
         
      SELECT DISTINCT
                CASE
                    WHEN 
           (ocp.party_id = ANY 
                 (ARRAY[331
                       , 9
                       , 8
                       , 299]
                 )
           ) THEN 'Democratic'::text
                    WHEN 
           (ocp.party_id = 56) THEN 'Republican'::text
                    ELSE NULL::text
                END AS party_group
           ,
            rc_1.candidate_id
           
        FROM (
                 (
                       (
                        SELECT DISTINCT rc_2.candidate_id
                   
                          FROM (rating_candidate rc_2
                     
                                JOIN rating r 
                                  ON (
                                         (
                                               (rc_2.rating_id = r.rating_id)
                                             AND (r.sig_id = 1016)
                                         )
                                   )
                             )
                       ) rc_1
             
                    JOIN office_candidate oc 
                      ON (
                             (
                                   (
                                         (oc.candidate_id = rc_1.candidate_id)
                                       AND (oc.office_id = ANY 
                                               (ARRAY[5
                                                     , 6]
                                               )
                                         )
                                   )
                                 AND (oc.officecandidatestatus_id = 1)
                             )
                       )
                 )
             
              JOIN office_candidate_party ocp 
                ON (
                       (ocp.office_candidate_id = oc.office_candidate_id)
                 )
           )
  
    ORDER BY 2
     ) c 
    ON (
           (c.candidate_id = rc.candidate_id)
     )
)
  
GROUP BY c.party_group
 
HAVING (c.party_group IS NOT NULL);

Index - Schema public


View: v_party_rating

v_party_rating Structure
F-Key Name Type Description
avg numeric
party_group text
SELECT avg
(rc.rating) AS avg
,
    c.party_group
   
FROM (
     (
      SELECT DISTINCT rc_1.candidate_id
           ,
                CASE
                    WHEN r.usesigrating THEN
                    CASE
                        WHEN 
           (btrim
                 (
                       (rc_1.sig_rating)::text
                 ) ~ '^\d+$'::text
           ) THEN 
           (btrim
                 (
                       (rc_1.sig_rating)::text
                 )
           )::numeric
                        ELSE NULL::numeric
                    END
                    WHEN 
           (btrim
                 (
                       (rc_1.our_rating)::text
                 ) ~ '^\d+$'::text
           ) THEN 
           (btrim
                 (
                       (rc_1.our_rating)::text
                 )
           )::numeric
                    ELSE NULL::numeric
                END AS rating
           
        FROM (rating_candidate rc_1
             
              JOIN rating r 
                ON (
                       (
                             (rc_1.rating_id = r.rating_id)
                           AND (r.sig_id = 1016)
                       )
                 )
           )
     ) rc
     
  JOIN (
      SELECT DISTINCT
                CASE
                    WHEN 
           (ecp.party_id = ANY 
                 (ARRAY[331
                       , 9
                       , 8
                       , 299]
                 )
           ) THEN 'Democratic'::text
                    WHEN 
           (ecp.party_id = 56) THEN 'Republican'::text
                    ELSE NULL::text
                END AS party_group
           ,
            rc_1.candidate_id
           
        FROM (
                 (
                       (
                             (
                                   (
                                         (rating_candidate rc_1
             
                                            JOIN rating r 
                                              ON (
                                                     (
                                                           (rc_1.rating_id = r.rating_id)
                                                         AND (r.sig_id = 1016)
                                                     )
                                               )
                                         )
             
                                      JOIN election_candidate ec 
                                        ON (
                                               (ec.candidate_id = rc_1.candidate_id)
                                         )
                                   )
             
                                JOIN election e 
                                  ON (
                                         (
                                               (e.election_id = ec.election_id)
                                             AND (e.electionyear = 2010)
                                         )
                                   )
                             )
             
                          JOIN electionstage_candidate esc 
                            ON (
                                   (esc.election_candidate_id = ec.election_candidate_id)
                             )
                       )
             
                    JOIN electionstage_candidate_party ecp 
                      ON (
                             (ecp.electionstage_candidate_id = esc.electionstage_candidate_id)
                       )
                 )
             
         LEFT JOIN office_candidate oc 
                ON (
                       (
                             (
                                   (oc.candidate_id = rc_1.candidate_id)
                                 AND (oc.office_id = ANY 
                                         (ARRAY[5
                                               , 6]
                                         )
                                   )
                             )
                           AND (oc.officecandidatestatus_id = 1)
                       )
                 )
           )
          
       WHERE (oc.candidate_id IS NULL)
        
       UNION
         
      SELECT DISTINCT
                CASE
                    WHEN 
           (ocp.party_id = ANY 
                 (ARRAY[331
                       , 9
                       , 8
                       , 299]
                 )
           ) THEN 'Democratic'::text
                    WHEN 
           (ocp.party_id = 56) THEN 'Republican'::text
                    ELSE NULL::text
                END AS party_group
           ,
            rc_1.candidate_id
           
        FROM (
                 (
                       (rating_candidate rc_1
             
                          JOIN rating r 
                            ON (
                                   (
                                         (rc_1.rating_id = r.rating_id)
                                       AND (r.sig_id = 1016)
                                   )
                             )
                       )
             
                    JOIN office_candidate oc 
                      ON (
                             (
                                   (
                                         (oc.candidate_id = rc_1.candidate_id)
                                       AND (oc.office_id = ANY 
                                               (ARRAY[5
                                                     , 6]
                                               )
                                         )
                                   )
                                 AND (oc.officecandidatestatus_id = 1)
                             )
                       )
                 )
             
              JOIN office_candidate_party ocp 
                ON (
                       (ocp.office_candidate_id = oc.office_candidate_id)
                 )
           )
  
    ORDER BY 2
     ) c 
    ON (
           (c.candidate_id = rc.candidate_id)
     )
)
  
GROUP BY c.party_group
 
HAVING (c.party_group IS NOT NULL);

Index - Schema public


View: v_pct_national_tally

v_pct_national_tally Structure
F-Key Name Type Description
typename text
count bigint
level text
SELECT'Total'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
   
FROM (
SELECT DISTINCT v_election_candidate.candidate_id
     ,
                CASE
                    WHEN 
     (v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (v_election_candidate.office_id >= 7)
         AND (v_election_candidate.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
  FROM (
           (v_election_candidate
             
              JOIN election e 
             USING (election_id)
           )
             
        JOIN npatcandidate nc 
       USING (election_candidate_id)
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (
                                         (e.electionyear)::double precision = date_part
                                         ('year'::text
                                               , now
                                               ()
                                         )
                                   )
                                 AND (NOT e.special)
                             )
                           AND (v_election_candidate.office_id = ANY 
                                   (ARRAY[3
                                         , 5
                                         , 6
                                         , 7
                                         , 8
                                         , 9]
                                   )
                             )
                       )
                     AND (v_election_candidate.electioncandidatestatus_id = ANY 
                             (ARRAY[2
                                   , 8
                                   , 9
                                   , 11
                                   , 12]
                             )
                       )
                 )
               AND (v_election_candidate.electionstage_id = 'G'::bpchar)
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level

UNION
 
SELECT'Total-Passed'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
   
FROM (
SELECT DISTINCT v_election_candidate.candidate_id
     ,
                CASE
                    WHEN 
     (v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (v_election_candidate.office_id >= 7)
         AND (v_election_candidate.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
  FROM (
           (v_election_candidate
             
              JOIN election e 
             USING (election_id)
           )
             
        JOIN npatcandidate nc 
       USING (election_candidate_id)
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (
                                                     (e.electionyear)::double precision = date_part
                                                     ('year'::text
                                                           , now
                                                           ()
                                                     )
                                               )
                                             AND (NOT e.special)
                                         )
                                       AND (v_election_candidate.office_id = ANY 
                                               (ARRAY[3
                                                     , 5
                                                     , 6
                                                     , 7
                                                     , 8
                                                     , 9]
                                               )
                                         )
                                   )
                                 AND (v_election_candidate.electioncandidatestatus_id = ANY 
                                         (ARRAY[2
                                               , 8
                                               , 9
                                               , 11
                                               , 12]
                                         )
                                   )
                             )
                           AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                       )
                     AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                 )
               AND (nc.npatstatus_id = ANY 
                       (ARRAY['A'::bpchar
                             ,'G'::bpchar
                             ,'L'::bpchar]
                       )
                 )
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level

UNION
 
SELECT'Inc'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
   
FROM (
SELECT DISTINCT ec.candidate_id
     ,
                CASE
                    WHEN 
     (ec.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (ec.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (ec.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (ec.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (ec.office_id >= 7)
         AND (ec.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
  FROM (
           (
                 (v_election_candidate ec
             
                    JOIN election e 
                   USING (election_id)
                 )
             
              JOIN npatcandidate nc 
             USING (election_candidate_id)
           )
             
        JOIN office_candidate oc 
       USING (candidate_id
                 , office_id
           )
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (
                                         (e.electionyear)::double precision = date_part
                                         ('year'::text
                                               , now
                                               ()
                                         )
                                   )
                                 AND (NOT e.special)
                             )
                           AND (ec.office_id = ANY 
                                   (ARRAY[3
                                         , 5
                                         , 6
                                         , 7
                                         , 8
                                         , 9]
                                   )
                             )
                       )
                     AND (ec.electionstage_id = 'G'::bpchar)
                 )
               AND (oc.officecandidatestatus_id = 1)
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level

UNION
 
SELECT'Inc-Ret'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
   
FROM (
SELECT DISTINCT ec.candidate_id
     ,
                CASE
                    WHEN 
     (ec.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (ec.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (ec.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (ec.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (ec.office_id >= 7)
         AND (ec.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
  FROM (
           (
                 (v_election_candidate ec
             
                    JOIN election e 
                   USING (election_id)
                 )
             
              JOIN npatcandidate nc 
             USING (election_candidate_id)
           )
             
        JOIN office_candidate oc 
       USING (candidate_id
                 , office_id
           )
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (e.electionyear)::double precision = date_part
                                               ('year'::text
                                                     , now
                                                     ()
                                               )
                                         )
                                       AND (NOT e.special)
                                   )
                                 AND (ec.office_id = ANY 
                                         (ARRAY[3
                                               , 5
                                               , 6
                                               , 7
                                               , 8
                                               , 9]
                                         )
                                   )
                             )
                           AND (ec.electionstage_id = 'G'::bpchar)
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
               AND (oc.officecandidatestatus_id = 1)
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level

UNION
 
SELECT'Dem'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
   
FROM (
SELECT DISTINCT v_election_candidate.candidate_id
     ,
                CASE
                    WHEN 
     (v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (v_election_candidate.office_id >= 7)
         AND (v_election_candidate.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
  FROM (
           (v_election_candidate
             
              JOIN election e 
             USING (election_id)
           )
             
        JOIN npatcandidate nc 
       USING (election_candidate_id)
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (e.electionyear)::double precision = date_part
                                               ('year'::text
                                                     , now
                                                     ()
                                               )
                                         )
                                       AND (NOT e.special)
                                   )
                                 AND (v_election_candidate.office_id = ANY 
                                         (ARRAY[3
                                               , 5
                                               , 6
                                               , 7
                                               , 8
                                               , 9]
                                         )
                                   )
                             )
                           AND (v_election_candidate.electioncandidatestatus_id = ANY 
                                   (ARRAY[2
                                         , 8
                                         , 9
                                         , 11
                                         , 12]
                                   )
                             )
                       )
                     AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                 )
               AND (
                       (v_election_candidate.party)::text ~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
           )
     )
   AND (
           (nc.npatgroup_id IS NULL)
          OR (
                 (
                       (nc.npatgroup_id)::text = ANY 
                       (ARRAY[
                             ('+'::character varying)::text
                             , ('?'::character varying)::text]
                       )
                 )
               AND (nc.npatstatus_id = ANY 
                       (ARRAY['A'::bpchar
                             ,'G'::bpchar
                             ,'L'::bpchar]
                       )
                 )
           )
     )
)
)      tally
  
GROUP BY tally.level

UNION 
 
SELECT'Dem-Ret'::text AS typename
,     
    count
(     tally.level) AS count
,     
    tally.level
   
FROM   (
SELECT DISTINCT v_election_candidate.candidate_id
,
                CASE
                    WHEN 
(v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(
     (v_election_candidate.office_id >= 7)
   AND (v_election_candidate.office_id <= 9)
) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
FROM (
     (v_election_candidate
             
        JOIN election e 
       USING (election_id)
     )
             
  JOIN npatcandidate nc 
 USING (election_candidate_id)
)
          
WHERE (
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                               (e.electionyear)::double precision = date_part
                                               ('year'::text
                                                     , now
                                                     ()
                                               )
                                         )
                                       AND (NOT e.special)
                                   )
                                 AND (v_election_candidate.office_id = ANY 
                                         (ARRAY[3
                                               , 5
                                               , 6
                                               , 7
                                               , 8
                                               , 9]
                                         )
                                   )
                             )
                           AND (v_election_candidate.electioncandidatestatus_id = ANY 
                                   (ARRAY[2
                                         , 8
                                         , 9
                                         , 11
                                         , 12]
                                   )
                             )
                       )
                     AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                 )
               AND (
                       (v_election_candidate.party)::text ~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
           )
     )
   AND (nc.npatstatus_id = ANY 
           (ARRAY['A'::bpchar
                 ,'G'::bpchar
                 ,'L'::bpchar]
           )
     )
)
AND (
     (nc.npatgroup_id IS NULL)
    OR (
           (
                 (nc.npatgroup_id)::text = ANY 
                 (ARRAY[
                       ('+'::character varying)::text
                       , ('?'::character varying)::text]
                 )
           )
         AND (nc.npatstatus_id = ANY 
                 (ARRAY['A'::bpchar
                       ,'G'::bpchar
                       ,'L'::bpchar]
                 )
           )
     )
)
)     
)            tally
  
GROUP BY     tally.level

UNION       
 
SELECT      'Rep'::text AS typename
,           
    count
(           tally.level) AS count
,           
    tally.level
   
FROM         (
SELECT DISTINCT v_election_candidate.candidate_id
,     
                CASE
                    WHEN 
(     v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(     v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(     v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(     v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(     
(v_election_candidate.office_id >= 7)
AND (v_election_candidate.office_id <= 9)
)      THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
FROM   (
(v_election_candidate
             
  JOIN election e 
 USING (election_id)
)
             
JOIN npatcandidate nc 
USING (election_candidate_id)
)     
          
WHERE  (
(
     (
           (
                 (
                       (
                             (
                                   (e.electionyear)::double precision = date_part
                                   ('year'::text
                                         , now
                                         ()
                                   )
                             )
                           AND (NOT e.special)
                       )
                     AND (v_election_candidate.office_id = ANY 
                             (ARRAY[3
                                   , 5
                                   , 6
                                   , 7
                                   , 8
                                   , 9]
                             )
                       )
                 )
               AND (v_election_candidate.electioncandidatestatus_id = ANY 
                       (ARRAY[2
                             , 8
                             , 9
                             , 11
                             , 12]
                       )
                 )
           )
         AND (v_election_candidate.electionstage_id = 'G'::bpchar)
     )
   AND (
           (v_election_candidate.party)::text ~ 
'(^|(, ))Republican(,|$)'::text
)
)     
AND    (
(nc.npatgroup_id IS NULL)
OR (
     (
           (nc.npatgroup_id)::text = ANY 
           (ARRAY[
                 ('+'::character varying)::text
                 , ('?'::character varying)::text]
           )
     )
   AND (nc.npatstatus_id = ANY 
           (ARRAY['A'::bpchar
                 ,'G'::bpchar
                 ,'L'::bpchar]
           )
     )
)
)     
)           
)                  tally
  
GROUP BY           tally.level

UNION             
 
SELECT            'Rep-Ret'::text AS typename
,                 
    count
(                 tally.level) AS count
,                 
    tally.level
   
FROM               (
SELECT       DISTINCT v_election_candidate.candidate_id
,           
                CASE
                    WHEN 
(           v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(           v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(           v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(           v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(           
(     v_election_candidate.office_id >= 7)
AND    (v_election_candidate.office_id <= 9)
)            THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
FROM         (
(     v_election_candidate
             
JOIN election e 
USING (election_id)
)     
             
JOIN   npatcandidate nc 
USING  (election_candidate_id)
)           
          
WHERE        (
(     
(
     (
           (
                 (
                       (
                             (
                                   (e.electionyear)::double precision = date_part
                                   ('year'::text
                                         , now
                                         ()
                                   )
                             )
                           AND (NOT e.special)
                       )
                     AND (v_election_candidate.office_id = ANY 
                             (ARRAY[3
                                   , 5
                                   , 6
                                   , 7
                                   , 8
                                   , 9]
                             )
                       )
                 )
               AND (v_election_candidate.electioncandidatestatus_id = ANY 
                       (ARRAY[2
                             , 8
                             , 9
                             , 11
                             , 12]
                       )
                 )
           )
         AND (v_election_candidate.electionstage_id = 'G'::bpchar)
     )
   AND (
           (v_election_candidate.party)::text ~ 
'(^|(, ))Republican(,|$)'::text
)
)     
AND    (nc.npatstatus_id = ANY 
(ARRAY['A'::bpchar
     ,'G'::bpchar
     ,'L'::bpchar]
)
)     
)           
AND          (
(     nc.npatgroup_id IS NULL)
OR     (
(
     (nc.npatgroup_id)::text = ANY 
     (ARRAY[
           ('+'::character varying)::text
           , ('?'::character varying)::text]
     )
)
AND (nc.npatstatus_id = ANY 
     (ARRAY['A'::bpchar
           ,'G'::bpchar
           ,'L'::bpchar]
     )
)
)     
)           
)                 
)                        tally
  
GROUP BY                 tally.level

UNION                   
 
SELECT                  '3rd'::text AS typename
,                       
    count
(                       tally.level) AS count
,                       
    tally.level
   
FROM                     (
SELECT             DISTINCT v_election_candidate.candidate_id
,                 
                CASE
                    WHEN 
(                 v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(                 v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(                 v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(                 v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(                 
(           v_election_candidate.office_id >= 7)
AND          (v_election_candidate.office_id <= 9)
)                  THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
FROM               (
(           v_election_candidate
             
JOIN   election e 
USING  (election_id)
)           
             
JOIN         npatcandidate nc 
USING        (election_candidate_id)
)                 
          
WHERE              (
(           
(     
(
     (
           (
                 (
                       (e.electionyear)::double precision = date_part
                       ('year'::text
                             , now
                             ()
                       )
                 )
               AND (NOT e.special)
           )
         AND (v_election_candidate.office_id = ANY 
                 (ARRAY[3
                       , 5
                       , 6
                       , 7
                       , 8
                       , 9]
                 )
           )
     )
   AND (v_election_candidate.electioncandidatestatus_id = ANY 
           (ARRAY[2
                 , 8
                 , 9
                 , 11
                 , 12]
           )
     )
)
AND (v_election_candidate.electionstage_id = 'G'::bpchar)
)     
AND    (
(
     (v_election_candidate.party)::text !~ 
'(^|(, ))Republican(,|$)'::text
)     
AND    (
(v_election_candidate.party)::text !~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
)           
)                 
)                       
AND                      (
(                 nc.npatgroup_id IS NULL)
OR                 (
(           
(     nc.npatgroup_id)::text = ANY 
(     ARRAY[
('+'::character varying)::text
, ('?'::character varying)::text]
)     
)           
AND          (nc.npatstatus_id = ANY 
(     ARRAY['A'::bpchar
,'G'::bpchar
,'L'::bpchar]
)     
)           
)                 
)                       
)                             
)                                    tally
  
GROUP BY                             tally.level

UNION                               
 
SELECT                              '3rd-Ret'::text AS typename
,                                   
    count
(                                   tally.level) AS count
,                                   
    tally.level
   
FROM                                 (
SELECT                         DISTINCT v_election_candidate.candidate_id
,                             
                CASE
                    WHEN 
(                             v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(                             v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(                             v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(                             v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(                             
(                       v_election_candidate.office_id >= 7)
AND                      (v_election_candidate.office_id <= 9)
)                              THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
           
FROM                           (
(                       v_election_candidate
             
JOIN               election e 
USING              (election_id)
)                       
             
JOIN                     npatcandidate nc 
USING                    (election_candidate_id)
)                             
          
WHERE                          (
(                       
(                 
(           
(     
(
     (
           (
                 (e.electionyear)::double precision = date_part
                 ('year'::text
                       , now
                       ()
                 )
           )
         AND (NOT e.special)
     )
   AND (v_election_candidate.office_id = ANY 
           (ARRAY[3
                 , 5
                 , 6
                 , 7
                 , 8
                 , 9]
           )
     )
)
AND (v_election_candidate.electioncandidatestatus_id = ANY 
     (ARRAY[2
           , 8
           , 9
           , 11
           , 12]
     )
)
)     
AND    (v_election_candidate.electionstage_id = 'G'::bpchar)
)           
AND          (
(     
(v_election_candidate.party)::text !~ 
'(^|(, ))Republican(,|$)'::text
)           
AND          (
(     v_election_candidate.party)::text !~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
)                 
)                       
)                             
AND                            (nc.npatstatus_id = ANY 
(                       ARRAY['A'::bpchar
,                 'G'::bpchar
,                 'L'::bpchar]
)                       
)                             
)                                   
AND                                  (
(                             nc.npatgroup_id IS NULL)
OR                             (
(                       
(                 nc.npatgroup_id)::text = ANY 
(                 ARRAY[
(           '+'::character varying)::text
,            ('?'::character varying)::text]
)                 
)                       
AND                      (nc.npatstatus_id = ANY 
(                 ARRAY['A'::bpchar
,           'G'::bpchar
,           'L'::bpchar]
)                 
)                       
)                             
)                                   
)                                         
)                                                tally
  
GROUP BY                                         tally.level
  
ORDER BY                                         1
,                                                3;

Index - Schema public


View: v_pct_tally_all

v_pct_tally_all Structure
F-Key Name Type Description
typename text
count bigint
level text
state character(2)
electionyear smallint
SELECT'Total'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
,
    tally.state
,
    tally.electionyear
   
FROM (
SELECT DISTINCT v_election_candidate.candidate_id
     ,
                CASE
                    WHEN 
     (v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (v_election_candidate.office_id >= 7)
         AND (v_election_candidate.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
     ,
            v_election_candidate.state_id AS state
     ,
            e.electionyear
           
  FROM (
           (v_election_candidate
             
              JOIN election e 
             USING (election_id)
           )
             
        JOIN npatcandidate nc 
       USING (election_candidate_id)
     )
          
 WHERE (
           (
                 (
                       (
                             (NOT e.special)
                           AND (v_election_candidate.office_id = ANY 
                                   (ARRAY[3
                                         , 5
                                         , 6
                                         , 7
                                         , 8
                                         , 9]
                                   )
                             )
                       )
                     AND (v_election_candidate.electioncandidatestatus_id = ANY 
                             (ARRAY[2
                                   , 8
                                   , 9
                                   , 11
                                   , 12]
                             )
                       )
                 )
               AND (v_election_candidate.electionstage_id = 'G'::bpchar)
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level
, tally.state
, tally.electionyear

UNION
 
SELECT'Total-Passed'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
,
    tally.state
,
    tally.electionyear
   
FROM (
SELECT DISTINCT v_election_candidate.candidate_id
     ,
                CASE
                    WHEN 
     (v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (v_election_candidate.office_id >= 7)
         AND (v_election_candidate.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
     ,
            v_election_candidate.state_id AS state
     ,
            e.electionyear
           
  FROM (
           (v_election_candidate
             
              JOIN election e 
             USING (election_id)
           )
             
        JOIN npatcandidate nc 
       USING (election_candidate_id)
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (
                                         (NOT e.special)
                                       AND (v_election_candidate.office_id = ANY 
                                               (ARRAY[3
                                                     , 5
                                                     , 6
                                                     , 7
                                                     , 8
                                                     , 9]
                                               )
                                         )
                                   )
                                 AND (v_election_candidate.electioncandidatestatus_id = ANY 
                                         (ARRAY[2
                                               , 8
                                               , 9
                                               , 11
                                               , 12]
                                         )
                                   )
                             )
                           AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                       )
                     AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                 )
               AND (nc.npatstatus_id = ANY 
                       (ARRAY['A'::bpchar
                             ,'G'::bpchar
                             ,'L'::bpchar]
                       )
                 )
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level
, tally.state
, tally.electionyear

UNION
 
SELECT'Inc'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
,
    tally.state
,
    tally.electionyear
   
FROM (
SELECT DISTINCT ec.candidate_id
     ,
                CASE
                    WHEN 
     (ec.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (ec.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (ec.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (ec.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (ec.office_id >= 7)
         AND (ec.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
     ,
            ec.state_id AS state
     ,
            e.electionyear
           
  FROM (
           (
                 (v_election_candidate ec
             
                    JOIN election e 
                   USING (election_id)
                 )
             
              JOIN npatcandidate nc 
             USING (election_candidate_id)
           )
             
        JOIN office_candidate oc 
       USING (candidate_id
                 , office_id
           )
     )
          
 WHERE (
           (
                 (
                       (
                             (NOT e.special)
                           AND (ec.office_id = ANY 
                                   (ARRAY[3
                                         , 5
                                         , 6
                                         , 7
                                         , 8
                                         , 9]
                                   )
                             )
                       )
                     AND (ec.electionstage_id = 'G'::bpchar)
                 )
               AND (oc.officecandidatestatus_id = 1)
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level
, tally.state
, tally.electionyear

UNION
 
SELECT'Inc-Ret'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
,
    tally.state
,
    tally.electionyear
   
FROM (
SELECT DISTINCT ec.candidate_id
     ,
                CASE
                    WHEN 
     (ec.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (ec.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (ec.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (ec.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (ec.office_id >= 7)
         AND (ec.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
     ,
            ec.state_id AS state
     ,
            e.electionyear
           
  FROM (
           (
                 (v_election_candidate ec
             
                    JOIN election e 
                   USING (election_id)
                 )
             
              JOIN npatcandidate nc 
             USING (election_candidate_id)
           )
             
        JOIN office_candidate oc 
       USING (candidate_id
                 , office_id
           )
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (NOT e.special)
                                 AND (ec.office_id = ANY 
                                         (ARRAY[3
                                               , 5
                                               , 6
                                               , 7
                                               , 8
                                               , 9]
                                         )
                                   )
                             )
                           AND (ec.electionstage_id = 'G'::bpchar)
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
               AND (oc.officecandidatestatus_id = 1)
           )
         AND (
                 (nc.npatgroup_id IS NULL)
                OR (
                       (
                             (nc.npatgroup_id)::text = ANY 
                             (ARRAY[
                                   ('+'::character varying)::text
                                   , ('?'::character varying)::text]
                             )
                       )
                     AND (nc.npatstatus_id = ANY 
                             (ARRAY['A'::bpchar
                                   ,'G'::bpchar
                                   ,'L'::bpchar]
                             )
                       )
                 )
           )
     )
) tally
  
GROUP BY tally.level
, tally.state
, tally.electionyear

UNION
 
SELECT'Dem'::text AS typename
,
    count
(tally.level) AS count
,
    tally.level
,
    tally.state
,
    tally.electionyear
   
FROM (
SELECT DISTINCT v_election_candidate.candidate_id
     ,
                CASE
                    WHEN 
     (v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
     (v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
     (v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
     (v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
     (
           (v_election_candidate.office_id >= 7)
         AND (v_election_candidate.office_id <= 9)
     ) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
     ,
            v_election_candidate.state_id AS state
     ,
            e.electionyear
           
  FROM (
           (v_election_candidate
             
              JOIN election e 
             USING (election_id)
           )
             
        JOIN npatcandidate nc 
       USING (election_candidate_id)
     )
          
 WHERE (
           (
                 (
                       (
                             (
                                   (NOT e.special)
                                 AND (v_election_candidate.office_id = ANY 
                                         (ARRAY[3
                                               , 5
                                               , 6
                                               , 7
                                               , 8
                                               , 9]
                                         )
                                   )
                             )
                           AND (v_election_candidate.electioncandidatestatus_id = ANY 
                                   (ARRAY[2
                                         , 8
                                         , 9
                                         , 11
                                         , 12]
                                   )
                             )
                       )
                     AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                 )
               AND (
                       (v_election_candidate.party)::text ~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
           )
     )
   AND (
           (nc.npatgroup_id IS NULL)
          OR (
                 (
                       (nc.npatgroup_id)::text = ANY 
                       (ARRAY[
                             ('+'::character varying)::text
                             , ('?'::character varying)::text]
                       )
                 )
               AND (nc.npatstatus_id = ANY 
                       (ARRAY['A'::bpchar
                             ,'G'::bpchar
                             ,'L'::bpchar]
                       )
                 )
           )
     )
)
)      tally
  
GROUP BY tally.level
,      tally.state
,      tally.electionyear

UNION 
 
SELECT'Dem-Ret'::text AS typename
,     
    count
(     tally.level) AS count
,     
    tally.level
,     
    tally.state
,     
    tally.electionyear
   
FROM   (
SELECT DISTINCT v_election_candidate.candidate_id
,
                CASE
                    WHEN 
(v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(
     (v_election_candidate.office_id >= 7)
   AND (v_election_candidate.office_id <= 9)
) THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
,
            v_election_candidate.state_id AS state
,
            e.electionyear
           
FROM (
     (v_election_candidate
             
        JOIN election e 
       USING (election_id)
     )
             
  JOIN npatcandidate nc 
 USING (election_candidate_id)
)
          
WHERE (
     (
           (
                 (
                       (
                             (
                                   (NOT e.special)
                                 AND (v_election_candidate.office_id = ANY 
                                         (ARRAY[3
                                               , 5
                                               , 6
                                               , 7
                                               , 8
                                               , 9]
                                         )
                                   )
                             )
                           AND (v_election_candidate.electioncandidatestatus_id = ANY 
                                   (ARRAY[2
                                         , 8
                                         , 9
                                         , 11
                                         , 12]
                                   )
                             )
                       )
                     AND (v_election_candidate.electionstage_id = 'G'::bpchar)
                 )
               AND (
                       (v_election_candidate.party)::text ~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
           )
     )
   AND (nc.npatstatus_id = ANY 
           (ARRAY['A'::bpchar
                 ,'G'::bpchar
                 ,'L'::bpchar]
           )
     )
)
AND (
     (nc.npatgroup_id IS NULL)
    OR (
           (
                 (nc.npatgroup_id)::text = ANY 
                 (ARRAY[
                       ('+'::character varying)::text
                       , ('?'::character varying)::text]
                 )
           )
         AND (nc.npatstatus_id = ANY 
                 (ARRAY['A'::bpchar
                       ,'G'::bpchar
                       ,'L'::bpchar]
                 )
           )
     )
)
)     
)            tally
  
GROUP BY     tally.level
,            tally.state
,            tally.electionyear

UNION       
 
SELECT      'Rep'::text AS typename
,           
    count
(           tally.level) AS count
,           
    tally.level
,           
    tally.state
,           
    tally.electionyear
   
FROM         (
SELECT DISTINCT v_election_candidate.candidate_id
,     
                CASE
                    WHEN 
(     v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(     v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(     v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(     v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(     
(v_election_candidate.office_id >= 7)
AND (v_election_candidate.office_id <= 9)
)      THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
,     
            v_election_candidate.state_id AS state
,     
            e.electionyear
           
FROM   (
(v_election_candidate
             
  JOIN election e 
 USING (election_id)
)
             
JOIN npatcandidate nc 
USING (election_candidate_id)
)     
          
WHERE  (
(
     (
           (
                 (
                       (NOT e.special)
                     AND (v_election_candidate.office_id = ANY 
                             (ARRAY[3
                                   , 5
                                   , 6
                                   , 7
                                   , 8
                                   , 9]
                             )
                       )
                 )
               AND (v_election_candidate.electioncandidatestatus_id = ANY 
                       (ARRAY[2
                             , 8
                             , 9
                             , 11
                             , 12]
                       )
                 )
           )
         AND (v_election_candidate.electionstage_id = 'G'::bpchar)
     )
   AND (
           (v_election_candidate.party)::text ~ 
'(^|(, ))Republican(,|$)'::text
)
)     
AND    (
(nc.npatgroup_id IS NULL)
OR (
     (
           (nc.npatgroup_id)::text = ANY 
           (ARRAY[
                 ('+'::character varying)::text
                 , ('?'::character varying)::text]
           )
     )
   AND (nc.npatstatus_id = ANY 
           (ARRAY['A'::bpchar
                 ,'G'::bpchar
                 ,'L'::bpchar]
           )
     )
)
)     
)           
)                  tally
  
GROUP BY           tally.level
,                  tally.state
,                  tally.electionyear

UNION             
 
SELECT            'Rep-Ret'::text AS typename
,                 
    count
(                 tally.level) AS count
,                 
    tally.level
,                 
    tally.state
,                 
    tally.electionyear
   
FROM               (
SELECT       DISTINCT v_election_candidate.candidate_id
,           
                CASE
                    WHEN 
(           v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(           v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(           v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(           v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(           
(     v_election_candidate.office_id >= 7)
AND    (v_election_candidate.office_id <= 9)
)            THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
,           
            v_election_candidate.state_id AS state
,           
            e.electionyear
           
FROM         (
(     v_election_candidate
             
JOIN election e 
USING (election_id)
)     
             
JOIN   npatcandidate nc 
USING  (election_candidate_id)
)           
          
WHERE        (
(     
(
     (
           (
                 (
                       (NOT e.special)
                     AND (v_election_candidate.office_id = ANY 
                             (ARRAY[3
                                   , 5
                                   , 6
                                   , 7
                                   , 8
                                   , 9]
                             )
                       )
                 )
               AND (v_election_candidate.electioncandidatestatus_id = ANY 
                       (ARRAY[2
                             , 8
                             , 9
                             , 11
                             , 12]
                       )
                 )
           )
         AND (v_election_candidate.electionstage_id = 'G'::bpchar)
     )
   AND (
           (v_election_candidate.party)::text ~ 
'(^|(, ))Republican(,|$)'::text
)
)     
AND    (nc.npatstatus_id = ANY 
(ARRAY['A'::bpchar
     ,'G'::bpchar
     ,'L'::bpchar]
)
)     
)           
AND          (
(     nc.npatgroup_id IS NULL)
OR     (
(
     (nc.npatgroup_id)::text = ANY 
     (ARRAY[
           ('+'::character varying)::text
           , ('?'::character varying)::text]
     )
)
AND (nc.npatstatus_id = ANY 
     (ARRAY['A'::bpchar
           ,'G'::bpchar
           ,'L'::bpchar]
     )
)
)     
)           
)                 
)                        tally
  
GROUP BY                 tally.level
,                        tally.state
,                        tally.electionyear

UNION                   
 
SELECT                  '3rd'::text AS typename
,                       
    count
(                       tally.level) AS count
,                       
    tally.level
,                       
    tally.state
,                       
    tally.electionyear
   
FROM                     (
SELECT             DISTINCT v_election_candidate.candidate_id
,                 
                CASE
                    WHEN 
(                 v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(                 v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(                 v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(                 v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(                 
(           v_election_candidate.office_id >= 7)
AND          (v_election_candidate.office_id <= 9)
)                  THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
,                 
            v_election_candidate.state_id AS state
,                 
            e.electionyear
           
FROM               (
(           v_election_candidate
             
JOIN   election e 
USING  (election_id)
)           
             
JOIN         npatcandidate nc 
USING        (election_candidate_id)
)                 
          
WHERE              (
(           
(     
(
     (
           (
                 (NOT e.special)
               AND (v_election_candidate.office_id = ANY 
                       (ARRAY[3
                             , 5
                             , 6
                             , 7
                             , 8
                             , 9]
                       )
                 )
           )
         AND (v_election_candidate.electioncandidatestatus_id = ANY 
                 (ARRAY[2
                       , 8
                       , 9
                       , 11
                       , 12]
                 )
           )
     )
   AND (v_election_candidate.electionstage_id = 'G'::bpchar)
)
AND (
     (v_election_candidate.party)::text !~ 
'(^|(, ))Republican(,|$)'::text
)     
)           
AND          (
(     v_election_candidate.party)::text !~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
)                 
)                       
AND                      (
(                 nc.npatgroup_id IS NULL)
OR                 (
(           
(     nc.npatgroup_id)::text = ANY 
(     ARRAY[
('+'::character varying)::text
, ('?'::character varying)::text]
)     
)           
AND          (nc.npatstatus_id = ANY 
(     ARRAY['A'::bpchar
,'G'::bpchar
,'L'::bpchar]
)     
)           
)                 
)                       
)                             
)                                    tally
  
GROUP BY                             tally.level
,                                    tally.state
,                                    tally.electionyear

UNION                               
 
SELECT                              '3rd-Ret'::text AS typename
,                                   
    count
(                                   tally.level) AS count
,                                   
    tally.level
,                                   
    tally.state
,                                   
    tally.electionyear
   
FROM                                 (
SELECT                         DISTINCT v_election_candidate.candidate_id
,                             
                CASE
                    WHEN 
(                             v_election_candidate.office_id = 1) THEN 'Presidential'::text
                    WHEN 
(                             v_election_candidate.office_id = 5) THEN 'US-House'::text
                    WHEN 
(                             v_election_candidate.office_id = 6) THEN 'US-Senate'::text
                    WHEN 
(                             v_election_candidate.office_id = 3) THEN 'Governor'::text
                    WHEN 
(                             
(                       v_election_candidate.office_id >= 7)
AND                      (v_election_candidate.office_id <= 9)
)                              THEN 'State Leg'::text
                    ELSE ''::text
                END AS level
,                             
            v_election_candidate.state_id AS state
,                             
            e.electionyear
           
FROM                           (
(                       v_election_candidate
             
JOIN               election e 
USING              (election_id)
)                       
             
JOIN                     npatcandidate nc 
USING                    (election_candidate_id)
)                             
          
WHERE                          (
(                       
(                 
(           
(     
(
     (
           (NOT e.special)
         AND (v_election_candidate.office_id = ANY 
                 (ARRAY[3
                       , 5
                       , 6
                       , 7
                       , 8
                       , 9]
                 )
           )
     )
   AND (v_election_candidate.electioncandidatestatus_id = ANY 
           (ARRAY[2
                 , 8
                 , 9
                 , 11
                 , 12]
           )
     )
)
AND (v_election_candidate.electionstage_id = 'G'::bpchar)
)     
AND    (
(v_election_candidate.party)::text !~ 
'(^|(, ))Republican(,|$)'::text
)           
)                 
AND                (
(           v_election_candidate.party)::text !~ 
'(^|(, ))Democratic((-NPL)|(/Farmer/Labor)|(,|$))'::text
)                       
)                             
AND                            (nc.npatstatus_id = ANY 
(                       ARRAY['A'::bpchar
,                 'G'::bpchar
,                 'L'::bpchar]
)                       
)                             
)                                   
AND                                  (
(                             nc.npatgroup_id IS NULL)
OR                             (
(                       
(                 nc.npatgroup_id)::text = ANY 
(                 ARRAY[
(           '+'::character varying)::text
,            ('?'::character varying)::text]
)                 
)                       
AND                      (nc.npatstatus_id = ANY 
(                 ARRAY['A'::bpchar
,           'G'::bpchar
,           'L'::bpchar]
)                 
)                       
)                             
)                                   
)                                         
)                                                tally
  
GROUP BY                                         tally.level
,                                                tally.state
,                                                tally.electionyear
  
ORDER BY                                         1
,                                                3;

Index - Schema public


View: v_rating

v_rating Structure
F-Key Name Type Description
avg numeric
party_group text
SELECT DISTINCT avg
(rc.rating) AS avg
,
        CASE
            WHEN 
(p.party_id = ANY 
     (ARRAY[331
           , 9
           , 8
           , 299]
     )
) THEN 'Democratic'::text
            WHEN 
(p.party_id = 56) THEN 'Republican'::text
            ELSE NULL::text
        END AS party_group
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (
                                          SELECT rc_1.candidate_id
                                               ,
                CASE
                    WHEN r.usesigrating THEN
                    CASE
                        WHEN 
                                               (btrim
                                                     (
                                                           (rc_1.sig_rating)::text
                                                     ) ~ '^\d+$'::text
                                               ) THEN 
                                               (btrim
                                                     (
                                                           (rc_1.sig_rating)::text
                                                     )
                                               )::numeric
                        ELSE NULL::numeric
                    END
                    WHEN 
                                               (btrim
                                                     (
                                                           (rc_1.our_rating)::text
                                                     ) ~ '^\d+$'::text
                                               ) THEN 
                                               (btrim
                                                     (
                                                           (rc_1.our_rating)::text
                                                     )
                                               )::numeric
                    ELSE NULL::numeric
                END AS rating
           
                                            FROM (rating_candidate rc_1
             
                                                  JOIN rating r 
                                                    ON (
                                                           (
                                                                 (rc_1.rating_id = r.rating_id)
                                                               AND (r.sig_id = 1016)
                                                           )
                                                     )
                                               )
                                         ) rc
     
                                 LEFT JOIN election_candidate ec 
                                        ON (
                                               (
                                                     (ec.candidate_id = rc.candidate_id)
                                                   AND (ec.office_id = ANY 
                                                           (ARRAY[5
                                                                 , 6]
                                                           )
                                                     )
                                               )
                                         )
                                   )
     
                           LEFT JOIN election e 
                                  ON (
                                         (
                                               (e.election_id = ec.election_id)
                                             AND (e.electionyear = 2010)
                                         )
                                   )
                             )
     
                     LEFT JOIN electionstage_candidate esc 
                            ON (
                                   (esc.election_candidate_id = ec.election_candidate_id)
                             )
                       )
     
               LEFT JOIN electionstage_candidate_party ecp 
                      ON (
                             (ecp.electionstage_candidate_id = esc.electionstage_candidate_id)
                       )
                 )
     
         LEFT JOIN office_candidate oc 
                ON (
                       (oc.candidate_id = rc.candidate_id)
                 )
           )
     
   LEFT JOIN office_candidate_party ocp 
          ON (
                 (
                       (ocp.office_candidate_id = oc.office_candidate_id)
                     AND (oc.office_id = ANY 
                             (ARRAY[5
                                   , 6]
                             )
                       )
                 )
           )
     )
     
LEFT JOIN party p 
    ON (
           (
                 (ecp.party_id = p.party_id)
                OR (ocp.party_id = p.party_id)
           )
     )
)
  
WHERE (
     (
           (rc.rating IS NOT NULL)
         AND (
                 (e.electionyear = 2010)
                OR (oc.officecandidatestatus_id = 1)
           )
     )
   AND (
           (ecp.party_id = ANY 
                 (ARRAY[56
                       , 8
                       , 9
                       , 299
                       , 331]
                 )
           )
          OR (ocp.party_id = ANY 
                 (ARRAY[56
                       , 8
                       , 9
                       , 299
                       , 331]
                 )
           )
     )
)
  
GROUP BY
        CASE
            WHEN 
(p.party_id = ANY 
     (ARRAY[331
           , 9
           , 8
           , 299]
     )
) THEN 'Democratic'::text
            WHEN 
(p.party_id = 56) THEN 'Republican'::text
            ELSE NULL::text
        END;

Index - Schema public


View: v_request_vote

v_request_vote Structure
F-Key Name Type Description
candidate_id integer
lastname character varying
pvslink text
action character varying
billnumber character varying
stage character varying
outcometext character varying
SELECT oc.candidate_id
,
    can.lastname
,
    
('http://votesmart.org/issue_keyvote_detail.php?cs_id='::text || cs.congstatus_id) AS pvslink
,
    ca.name AS action
,
    c.billnumber
,
    cst.name AS stage
,
    ct.outcometext
   
FROM (
     (
           (
                 (
                       (
                             (
                                   (
                                         (office_candidate oc
     
                                            JOIN candidate can 
                                           USING (candidate_id)
                                         )
     
                                      JOIN congstatus_candidate cc 
                                     USING (office_candidate_id)
                                   )
     
                                JOIN congstatus cs 
                               USING (congstatus_id)
                             )
     
                          JOIN congress c 
                         USING (congress_id)
                       )
     
                    JOIN congaction ca 
                   USING (congaction_id)
                 )
     
              JOIN congstage cst 
             USING (congstage_id)
           )
     
        JOIN congtools cto 
       USING (congtype_id
                 , conglevel_id
                 , congstage_id
                 , congoutcome_id
           )
     )
     
  JOIN congoutcometext ct 
 USING (congoutcometext_id)
);

Index - Schema public


View: v_running_mate

v_running_mate Structure
F-Key Name Type Description
election_candidate_id integer
rm_election_candidate_id integer
rm_office_id smallint
office_id smallint
parent_id integer
candidate_id integer
rm_candidate_id integer
firstname character varying
nickname character varying
middlename character varying
lastname character varying
suffix character varying
candidatepreferredname_id character(1)
title character varying
rank smallint
rm_party character varying
 WITH running_mate
(election_candidate_id
     , rm_election_candidate_id
     , rm_office_id
     , office_id
     , parent_id
     , candidate_id
     , rm_candidate_id
     , firstname
     , nickname
     , middlename
     , lastname
     , suffix
     , candidatepreferredname_id
     , title
     , rank
) AS 
(
         
SELECT ec.election_candidate_id
     ,
            ecp.election_candidate_id AS rm_election_candidate_id
     ,
            ecp.office_id
     ,
            ec.office_id AS rm_office_id
     ,
            ec.parent_id
     ,
            ec.candidate_id
     ,
            ecp.candidate_id AS rm_candidate_id
     ,
            c.firstname
     ,
            c.nickname
     ,
            c.middlename
     ,
            c.lastname
     ,
            c.suffix
     ,
            c.candidatepreferredname_id
     ,
            o.title
     ,
            o.rank
           
  FROM (
           (
                 (
                       (election_candidate ec
             
                          JOIN election e 
                            ON (
                                   (
                                         (e.election_id = ec.election_id)
                                       AND (e.officetype_id = ANY 
                                               (ARRAY['P'::bpchar
                                                     ,'G'::bpchar]
                                               )
                                         )
                                   )
                             )
                       )
             
                    JOIN candidate c 
                   USING (candidate_id)
                 )
             
              JOIN office o 
                ON (
                       (
                             (o.office_id = ec.office_id)
                           AND (o.officetype_id = ANY 
                                   (ARRAY['P'::bpchar
                                         ,'G'::bpchar]
                                   )
                             )
                       )
                 )
           )
             
        JOIN election_candidate ecp 
          ON (
                 (
                       (ecp.election_candidate_id = ec.parent_id)
                     AND (ecp.office_id = ANY 
                             (ARRAY[1
                                   , 2
                                   , 3
                                   , 4]
                             )
                       )
                 )
           )
     )
          
 WHERE (ec.office_id = ANY 
           (ARRAY[1
                 , 2
                 , 3
                 , 4]
           )
     )
        
)
 
SELECT running_mate.election_candidate_id
,
    running_mate.rm_election_candidate_id
,
    running_mate.rm_office_id
,
    running_mate.office_id
,
    running_mate.parent_id
,
    running_mate.candidate_id
,
    running_mate.rm_candidate_id
,
    running_mate.firstname
,
    running_mate.nickname
,
    running_mate.middlename
,
    running_mate.lastname
,
    running_mate.suffix
,
    running_mate.candidatepreferredname_id
,
    running_mate.title
,
    running_mate.rank
,
    pvs_election_party
(running_mate.parent_id) AS rm_party
   
FROM running_mate;

Index - Schema public


View: v_running_mate_check

v_running_mate_check Structure
F-Key Name Type Description
election_candidate_id integer
wrong_parent_id integer
election_id integer
candidate_id integer
probably_correct_parent_id integer
SELECT ec.election_candidate_id
,
    ec.parent_id AS wrong_parent_id
,
    ec.election_id
,
    ec.candidate_id
,
    ec_p.election_candidate_id AS probably_correct_parent_id
   
FROM (
     (election_candidate ec
     
        JOIN election e 
       USING (election_id)
     )
     
  JOIN election_candidate ec_p 
    ON (
           (
                 (ec_p.election_id = ec.election_id)
               AND (ec_p.candidate_id = ec.parent_id)
           )
     )
)
  
WHERE (
     (ec.parent_id IS NOT NULL)
   AND (NOT 
           (EXISTS 
                 (
                  SELECT 1
           
                    FROM election_candidate ec2
          
                   WHERE (
                             (
                                   (ec.parent_id = ec2.election_candidate_id)
                                 AND (ec.election_id = ec2.election_id)
                             )
                           AND (ec2.parent_id = ec.election_candidate_id)
                       )
                 )
           )
     )
);

Index - Schema public


View: v_running_mate_test

v_running_mate_test Structure
F-Key Name Type Description
election_candidate_id integer
rm_office_id smallint
office_id smallint
parent_id integer
candidate_id integer
rm_candidate_id integer
firstname character varying
nickname character varying
middlename character varying
lastname character varying
suffix character varying
candidatepreferredname_id character(1)
title character varying
rank smallint
rm_party character varying
 WITH running_mate
(election_candidate_id
     , rm_office_id
     , office_id
     , parent_id
     , candidate_id
     , rm_candidate_id
     , firstname
     , nickname
     , middlename
     , lastname
     , suffix
     , candidatepreferredname_id
     , title
     , rank
) AS 
(
         
SELECT ec.election_candidate_id
     ,
            ecp.office_id
     ,
            ec.office_id AS rm_office_id
     ,
            ec.parent_id
     ,
            ec.candidate_id
     ,
            ecp.candidate_id AS rm_candidate_id
     ,
            c.firstname
     ,
            c.nickname
     ,
            c.middlename
     ,
            c.lastname
     ,
            c.suffix
     ,
            c.candidatepreferredname_id
     ,
            o.title
     ,
            o.rank
           
  FROM (election_candidate ec
             
        JOIN election e 
       USING (election_id)
     )
     ,
            candidate c
     ,
            office o
     ,
            election_candidate ecp
          
 WHERE (
           (
                 (ecp.candidate_id = c.candidate_id)
               AND (ecp.office_id = o.office_id)
           )
         AND (ecp.election_candidate_id = ec.parent_id)
     )
        
)
 
SELECT running_mate.election_candidate_id
,
    running_mate.rm_office_id
,
    running_mate.office_id
,
    running_mate.parent_id
,
    running_mate.candidate_id
,
    running_mate.rm_candidate_id
,
    running_mate.firstname
,
    running_mate.nickname
,
    running_mate.middlename
,
    running_mate.lastname
,
    running_mate.suffix
,
    running_mate.candidatepreferredname_id
,
    running_mate.title
,
    running_mate.rank
,
    'filler'::character varying AS rm_party
   
FROM running_mate;

Index - Schema public


View: v_search_districtname

v_search_districtname Structure
F-Key Name Type Description
districtname_id smallint
dn_name character varying
number smallint
SELECT districtname.districtname_id
,
    districtname.name AS dn_name
,
        CASE
            WHEN 
(
     (districtname.name)::text ~ '^[0-9]+$'::text
) THEN 
(districtname.name)::smallint
            WHEN 
(
     (districtname.name)::text ~ '^[0-9]+[A-H]$'::text
) THEN 
(translate
     (
           (districtname.name)::text
           ,'ABCDEFGH'::text
           ,''::text
     )
)::smallint
            ELSE NULL::smallint
        END AS number
   
FROM districtname;

Index - Schema public


View: v_sig_rating

v_sig_rating Structure
F-Key Name Type Description
sig_id integer
rating_id integer
sig_release_id smallint
sig_category_id smallint
rating_category_id smallint
rating_release_id smallint
signame character varying
ratingname character varying
span character varying
ratingtext text
sig_category character varying
rating_category character varying
SELECT s.sig_id
,
    r.rating_id
,
    s.release_id AS sig_release_id
,
    sc.category_id AS sig_category_id
,
    rc.category_id AS rating_category_id
,
    r.release_id AS rating_release_id
,
    s.name AS signame
,
    r.name AS ratingname
,
    r.span
,
    r.ratingtext
,
    scat.name AS sig_category
,
    rcat.name AS rating_category
   
FROM (
     (
           (
                 (
                       (sig s
     
                          JOIN rating r 
                         USING (sig_id)
                       )
     
               LEFT JOIN rating_category rc 
                   USING (rating_id)
                 )
     
         LEFT JOIN category rcat 
             USING (category_id)
           )
     
   LEFT JOIN sig_category sc 
          ON (
                 (sc.sig_id = s.sig_id)
           )
     )
     
LEFT JOIN category scat 
    ON (
           (sc.category_id = scat.category_id)
     )
);

Index - Schema public


View: v_sig_rating_candidate

v_sig_rating_candidate Structure
F-Key Name Type Description
sig_id integer
rating_id integer
sig_category_id smallint
rating_category_id smallint
candidate_id integer
sig_release_id smallint
rating_release_id smallint
signame character varying
ratingname character varying
span character varying
ratingtext text
sigcategory character varying
ratingcategory character varying
our_rating character varying
sig_rating character varying
usesigrating boolean
SELECT s.sig_id
,
    r.rating_id
,
    sc.category_id AS sig_category_id
,
    rc.category_id AS rating_category_id
,
    rcand.candidate_id
,
    s.release_id AS sig_release_id
,
    r.release_id AS rating_release_id
,
    s.name AS signame
,
    r.name AS ratingname
,
    r.span
,
    r.ratingtext
,
    scat.name AS sigcategory
,
    rcat.name AS ratingcategory
,
    rcand.our_rating
,
    rcand.sig_rating
,
    r.usesigrating
   
FROM (
     (
           (
                 (
                       (
                             (sig s
     
                                JOIN rating r 
                               USING (sig_id)
                             )
     
                          JOIN rating_candidate rcand 
                            ON (
                                   (rcand.rating_id = r.rating_id)
                             )
                       )
     
               LEFT JOIN rating_category rc 
                      ON (
                             (rc.rating_id = r.rating_id)
                       )
                 )
     
         LEFT JOIN category rcat 
             USING (category_id)
           )
     
   LEFT JOIN sig_category sc 
          ON (
                 (sc.sig_id = s.sig_id)
           )
     )
     
LEFT JOIN category scat 
    ON (
           (sc.category_id = scat.category_id)
     )
);

Index - Schema public


View: v_speech_category

v_speech_category Structure
F-Key Name Type Description
speech_id integer
title character varying
speechdate date
year double precision
speechtype_id smallint
manual boolean
categories text
tags text
SELECT DISTINCT s.speech_id
,
    s.title
,
    s.speechdate
,
    date_part
('year'::text
     , s.speechdate
) AS year
,
    s.speechtype_id
,
        CASE
            WHEN 
(
     (sl.accessedby)::text = 'auto'::text
) THEN false
            ELSE sl.committed
        END AS manual
,
    array_to_string
(ARRAY
     (
      SELECT c.name
           
        FROM (category c
             
              JOIN speech_category 
             USING (category_id)
           )
          
       WHERE (speech_category.speech_id = s.speech_id)
     )
     ,'; '::text
) AS categories
,
    array_to_string
(ARRAY
     (
      SELECT c.name
           
        FROM (tag c
             
              JOIN speech_tag 
             USING (tag_id)
           )
          
       WHERE (speech_tag.speech_id = s.speech_id)
     )
     ,'; '::text
) AS tags
   
FROM (
     (speech s
     
        JOIN speech_category sc 
       USING (speech_id)
     )
     
LEFT JOIN speechlocking sl 
 USING (speech_id)
);

Index - Schema public


View: v_speech_count

v_speech_count Structure
F-Key Name Type Description
count bigint
type text
SELECT count
(*) AS count
,
    'uncategorized'::text AS type
   
FROM speech s
  
WHERE (NOT 
     (EXISTS 
           (
            SELECT 1
           
              FROM speech_category sc
          
             WHERE (sc.speech_id = s.speech_id)
           )
     )
)
UNION
 
SELECT count
(*) AS count
,
    
'uncategorized by staff/interns, may have categories'::text AS type
   
FROM speechlocking sl
  
WHERE (
     (NOT 
           (sl.committed 
               AND (
                       (sl.accessedby)::text <> 'auto'::text
                 )
           )
     )
    OR (NOT 
           (EXISTS 
                 (
                  SELECT 1
           
                    FROM speech_category sc
          
                   WHERE (sc.speech_id = sl.speech_id)
                 )
           )
     )
)
UNION
 
SELECT count
(*) AS count
,
    
'uncategorized (current federal candidates/officials)'::text AS type
   
FROM   speech s
  
WHERE  (
(NOT 
     (EXISTS 
           (
            SELECT 1
           
              FROM speech_category sc
          
             WHERE (sc.speech_id = s.speech_id)
           )
     )
)
AND (
     (EXISTS 
           (
            SELECT 1
           
              FROM (
                       (
                             (office_candidate oc
             
                                JOIN office o 
                               USING (office_id)
                             )
             
                          JOIN officetype ot 
                         USING (officetype_id)
                       )
             
                    JOIN speech_candidate sc 
                   USING (candidate_id)
                 )
          
             WHERE (
                       (
                             (ot.officelevel_id = 'F'::bpchar)
                           AND (oc.officecandidatestatus_id = 1)
                       )
                     AND (s.speech_id = sc.speech_id)
                 )
           )
     )
    OR (EXISTS 
           (
            SELECT 1
           
              FROM (
                       (
                             (
                                   (
                                         (
                                               (election_candidate ec
             
                                                  JOIN election e 
                                                 USING (election_id)
                                               )
             
                                            JOIN office o 
                                           USING (office_id)
                                         )
             
                                      JOIN officetype ot 
                                        ON (
                                               (o.officetype_id = ot.officetype_id)
                                         )
                                   )
             
                                JOIN election_electionstage ees 
                               USING (election_id)
                             )
             
                          JOIN speech_candidate sc 
                         USING (candidate_id)
                       )
             
                    JOIN electionstage_candidate esc 
                   USING (election_candidate_id
                             , election_electionstage_id
                       )
                 )
          
             WHERE (
                       (
                             (ot.officelevel_id = 'F'::bpchar)
                           AND (ees.electiondate > now
                                   ()
                             )
                       )
                     AND (s.speech_id = sc.speech_id)
                 )
           )
     )
)
)     
UNION 
 
SELECT count
(     *) AS count
,     
    
'unsaved (current federal candidates/officials)'::text AS type
   
FROM         (speech s
     
JOIN   speechlocking sl 
USING  (speech_id)
)           
  
WHERE        (
(     NOT sl.committed)
AND    (
(EXISTS 
     (
      SELECT 1
           
        FROM (
                 (
                       (office_candidate oc
             
                          JOIN office o 
                         USING (office_id)
                       )
             
                    JOIN officetype ot 
                   USING (officetype_id)
                 )
             
              JOIN speech_candidate sc 
             USING (candidate_id)
           )
          
       WHERE (
                 (
                       (ot.officelevel_id = 'F'::bpchar)
                     AND (oc.officecandidatestatus_id = 1)
                 )
               AND (s.speech_id = sc.speech_id)
           )
     )
)
OR (EXISTS 
     (
      SELECT 1
           
        FROM (
                 (
                       (
                             (
                                   (
                                         (election_candidate ec
             
                                            JOIN election e 
                                           USING (election_id)
                                         )
             
                                      JOIN office o 
                                     USING (office_id)
                                   )
             
                                JOIN officetype ot 
                                  ON (
                                         (o.officetype_id = ot.officetype_id)
                                   )
                             )
             
                          JOIN election_electionstage ees 
                         USING (election_id)
                       )
             
                    JOIN speech_candidate sc 
                   USING (candidate_id)
                 )
             
              JOIN electionstage_candidate esc 
             USING (election_candidate_id
                       , election_electionstage_id
                 )
           )
          
       WHERE (
                 (
                       (ot.officelevel_id = 'F'::bpchar)
                     AND (ees.electiondate > now
                             ()
                       )
                 )
               AND (s.speech_id = sc.speech_id)
           )
     )
)
)     
)           
UNION       
 
SELECT       count
(           *) AS count
,           
    
'uncategorized by staff/interns (current federal candidates/officials)'::text AS type
   
FROM               speech s
  
WHERE              (
(           
(     
(s.created < '2013-03-01 00:00:00'::timestamp without time zone)
OR (s.created IS NULL)
)     
AND    (NOT 
(
     (EXISTS 
           (
            SELECT 1
           
              FROM speech_category sc
          
             WHERE (sc.speech_id = s.speech_id)
           )
     )
   AND (EXISTS 
           (
            SELECT 1
           
              FROM speechlocking sl
          
             WHERE (
                       (sl.committed 
                           AND (
                                   (sl.accessedby)::text <> 'auto'::text
                             )
                       )
                     AND (sl.speech_id = s.speech_id)
                 )
           )
     )
)
)     
)           
AND          (
(     EXISTS 
(
SELECT 1
           
  FROM (
           (
                 (office_candidate oc
             
                    JOIN office o 
                   USING (office_id)
                 )
             
              JOIN officetype ot 
             USING (officetype_id)
           )
             
        JOIN speech_candidate sc 
       USING (candidate_id)
     )
          
 WHERE (
           (
                 (ot.officelevel_id = 'F'::bpchar)
               AND (oc.officecandidatestatus_id = 1)
           )
         AND (s.speech_id = sc.speech_id)
     )
)
)     
OR     (EXISTS 
(
SELECT 1
           
  FROM (
           (
                 (
                       (
                             (
                                   (election_candidate ec
             
                                      JOIN election e 
                                     USING (election_id)
                                   )
             
                                JOIN office o 
                               USING (office_id)
                             )
             
                          JOIN officetype ot 
                            ON (
                                   (o.officetype_id = ot.officetype_id)
                             )
                       )
             
                    JOIN election_electionstage ees 
                   USING (election_id)
                 )
             
              JOIN speech_candidate sc 
             USING (candidate_id)
           )
             
        JOIN electionstage_candidate esc 
       USING (election_candidate_id
                 , election_electionstage_id
           )
     )
          
 WHERE (
           (
                 (ot.officelevel_id = 'F'::bpchar)
               AND (ees.electiondate > now
                       ()
                 )
           )
         AND (s.speech_id = sc.speech_id)
     )
)
)     
)           
)                 
UNION             
 
SELECT             count
(                 *) AS count
,                 
    
'uncategorized (current governor candidates/officials)'::text AS type
   
FROM                     speech s
  
WHERE                    (
(                 NOT 
(           EXISTS 
(     
SELECT 1
           
FROM speech_category sc
          
WHERE (sc.speech_id = s.speech_id)
)     
)           
)                 
AND                (
(           EXISTS 
(     
SELECT 1
           
FROM (
     (
           (office_candidate oc
             
              JOIN office o 
             USING (office_id)
           )
             
        JOIN officetype ot 
       USING (officetype_id)
     )
             
  JOIN speech_candidate sc 
 USING (candidate_id)
)
          
WHERE (
     (
           (o.office_id = 3)
         AND (oc.officecandidatestatus_id = 1)
     )
   AND (s.speech_id = sc.speech_id)
)
)     
)           
OR           (EXISTS 
(     
SELECT 1
           
FROM (
     (
           (
                 (
                       (
                             (election_candidate ec
             
                                JOIN election e 
                               USING (election_id)
                             )
             
                          JOIN office o 
                         USING (office_id)
                       )
             
                    JOIN officetype ot 
                      ON (
                             (o.officetype_id = ot.officetype_id)
                       )
                 )
             
              JOIN election_electionstage ees 
             USING (election_id)
           )
             
        JOIN speech_candidate sc 
       USING (candidate_id)
     )
             
  JOIN electionstage_candidate esc 
 USING (election_candidate_id
           , election_electionstage_id
     )
)
          
WHERE (
     (
           (o.office_id = 3)
         AND (ees.electiondate > now
                 ()
           )
     )
   AND (s.speech_id = sc.speech_id)
)
)     
)           
)                 
)                       
  
ORDER BY                 2;

Index - Schema public


View: v_tag_usage

v_tag_usage Structure
F-Key Name Type Description
tag_id integer
name text
sect text
count bigint
SELECT t.tag_id
,
    t.name
,
    at.sect
,
    count
(t.tag_id) AS count
   
FROM (
     (
      SELECT ac.tag_id
           ,
            'biotext'::text AS sect
           
        FROM (
            SELECT biotext_tag.tag_id
                   
              FROM biotext_tag
                
         UNION ALL
                 
            SELECT additional_tag.tag_id
                   
              FROM additional_tag
                
         UNION ALL
                 
            SELECT additional_candidate_tag.tag_id
                   
              FROM additional_candidate_tag
                
         UNION ALL
                 
            SELECT education_tag.tag_id
                   
              FROM education_tag
                
         UNION ALL
                 
            SELECT religion_tag.tag_id
                   
              FROM religion_tag
                
         UNION ALL
                 
            SELECT experience_tag.tag_id
                   
              FROM experience_tag
           ) ac
        
   UNION ALL
         
      SELECT committee_tag.tag_id
           ,
            'committee'::text AS sect
           
        FROM committee_tag
        
   UNION ALL
         
      SELECT congcategory_tag.tag_id
           ,
            'cong'::text AS sect
           
        FROM congcategory_tag
        
   UNION ALL
         
      SELECT measure_tag.tag_id
           ,
            'measure'::text AS sect
           
        FROM measure_tag
        
   UNION ALL
         
      SELECT npatanswer_tag.tag_id
           ,
            'npatanswer'::text AS sect
           
        FROM npatanswer_tag
        
   UNION ALL
         
      SELECT rating_tag.tag_id
           ,
            'rating'::text AS sect
           
        FROM rating_tag
        
   UNION ALL
         
      SELECT sig_tag.tag_id
           ,
            'sig'::text AS sect
           
        FROM sig_tag
        
   UNION ALL
         
      SELECT speech_tag.tag_id
           ,
            'speech'::text AS sect
           
        FROM speech_tag
        
   UNION ALL
         
      SELECT party_tag.tag_id
           ,
            'party'::text AS sect
           
        FROM party_tag
     ) at
     
  JOIN tag t 
 USING (tag_id)
)
  
GROUP BY t.tag_id
, t.name
, at.sect
  
ORDER BY count
(t.tag_id);

Index - Schema public


View: v_with_rc

v_with_rc Structure
F-Key Name Type Description
avg numeric
party_group text
 WITH rating_candidates AS 
(
         
SELECT DISTINCT rc_1.candidate_id
           
  FROM rating_candidate rc_1
     ,
            rating r
          
 WHERE (
           (r.sig_id = 1016)
         AND (r.rating_id = rc_1.rating_id)
     )
        
)
 
SELECT avg
(rc.rating) AS avg
,
    c.party_group
   
FROM (
     (
      SELECT DISTINCT rc_1.candidate_id
           ,
                CASE
                    WHEN r.usesigrating THEN
                    CASE
                        WHEN 
           (btrim
                 (
                       (rc_1.sig_rating)::text
                 ) ~ '^\d+$'::text
           ) THEN 
           (btrim
                 (
                       (rc_1.sig_rating)::text
                 )
           )::numeric
                        ELSE NULL::numeric
                    END
                    WHEN 
           (btrim
                 (
                       (rc_1.our_rating)::text
                 ) ~ '^\d+$'::text
           ) THEN 
           (btrim
                 (
                       (rc_1.our_rating)::text
                 )
           )::numeric
                    ELSE NULL::numeric
                END AS rating
           
        FROM (rating_candidate rc_1
             
              JOIN rating r 
                ON (
                       (
                             (rc_1.rating_id = r.rating_id)
                           AND (r.sig_id = 1016)
                       )
                 )
           )
     ) rc
     
  JOIN (
      SELECT DISTINCT
                CASE
                    WHEN 
           (ecp.party_id = ANY 
                 (ARRAY[331
                       , 9
                       , 8
                       , 299]
                 )
           ) THEN 'Democratic'::text
                    WHEN 
           (ecp.party_id = 56) THEN 'Republican'::text
                    ELSE NULL::text
                END AS party_group
           ,
            rc_1.candidate_id
           
        FROM (
                 (
                       (
                             (
                                   (rating_candidates rc_1
             
                                      JOIN election_candidate ec 
                                        ON (
                                               (ec.candidate_id = rc_1.candidate_id)
                                         )
                                   )
             
                                JOIN election e 
                                  ON (
                                         (e.election_id = ec.election_id)
                                   )
                             )
             
                          JOIN electionstage_candidate esc 
                            ON (
                                   (esc.election_candidate_id = ec.election_candidate_id)
                             )
                       )
             
                    JOIN electionstage_candidate_party ecp 
                      ON (
                             (ecp.electionstage_candidate_id = esc.electionstage_candidate_id)
                       )
                 )
             
         LEFT JOIN office_candidate oc 
                ON (
                       (
                             (
                                   (oc.candidate_id = rc_1.candidate_id)
                                 AND (oc.office_id = ANY 
                                         (ARRAY[5
                                               , 6]
                                         )
                                   )
                             )
                           AND (oc.officecandidatestatus_id = 1)
                       )
                 )
           )
          
       WHERE (oc.candidate_id IS NULL)
        
       UNION
         
      SELECT DISTINCT
                CASE
                    WHEN 
           (ocp.party_id = ANY 
                 (ARRAY[331
                       , 9
                       , 8
                       , 299]
                 )
           ) THEN 'Democratic'::text
                    WHEN 
           (ocp.party_id = 56) THEN 'Republican'::text
                    ELSE NULL::text
                END AS party_group
           ,
            rc_1.candidate_id
           
        FROM (
                 (rating_candidates rc_1
             
                    JOIN office_candidate oc 
                      ON (
                             (
                                   (oc.candidate_id = rc_1.candidate_id)
                                 AND (oc.officecandidatestatus_id = 1)
                             )
                       )
                 )
             
              JOIN office_candidate_party ocp 
                ON (
                       (ocp.office_candidate_id = oc.office_candidate_id)
                 )
           )
  
    ORDER BY 2
     ) c 
    ON (
           (c.candidate_id = rc.candidate_id)
     )
)
  
GROUP BY c.party_group;

Index - Schema public


Table: vacancy

vacancy Structure
F-Key Name Type Description
vacancy_id serial PRIMARY KEY
office_candidate.office_candidate_id office_candidate_id integer NOT NULL
message text NOT NULL DEFAULT ''::text
election.election_id election_id integer

Index - Schema public


Table: webaddresstype

webaddresstype Structure
F-Key Name Type Description
webaddresstype_id smallint PRIMARY KEY
name character varying NOT NULL DEFAULT ''::character varying
rank smallint

Tables referencing this one via Foreign Key Constraints:

Index - Schema public


Table: website

website Structure
F-Key Name Type Description
website_id serial PRIMARY KEY
name text
website text UNIQUE
rank integer

Index - Schema public


Table: zip2district

zip2district Structure
F-Key Name Type Description
zip5 integer
zip4start smallint
zip4end smallint
ushouse smallint
stateupper smallint
statelower smallint
statecode smallint
countycode smallint
centroidtype smallint
recordtype smallint
peculiarity character varying
zip2district__zip5 zip5

Index - Schema public


Table: zip2district_old

zip2district_old Structure
F-Key Name Type Description
zip5 integer
zip4start smallint
zip4end smallint
ushouse smallint
stateupper smallint
statelower smallint
statecode smallint
countycode smallint
centroidtype smallint
recordtype smallint
peculiarity character varying

Index - Schema public


Table: zip2redistrict

zip2redistrict Structure
F-Key Name Type Description
zip5 integer
zip4start smallint
zip4end smallint
ushouse smallint
stateupper smallint
statelower smallint
statecode smallint
countycode smallint
centroidtype smallint
recordtype smallint
peculiarity character varying
zip2redistrict__zip5 zip5

Index - Schema public


Table: zip2redistrict_old

zip2redistrict_old Structure
F-Key Name Type Description
zip5 integer
zip4start smallint
zip4end smallint
ushouse smallint
stateupper smallint
statelower smallint
statecode smallint
countycode smallint
centroidtype smallint
recordtype smallint
peculiarity character varying

Index - Schema public


Table: zipcode

zipcode Structure
F-Key Name Type Description
zipcode_id integer
state character(2)
city character varying
county character varying
areacode character varying
latitude numeric
longitude numeric
timezone smallint
elevation smallint
countycode smallint
daylightsavings boolean
classcode character varying
multicounty boolean
statecode smallint
zipcode_pk serial PRIMARY KEY
zipcode__zipcode_id zipcode_id

Index - Schema public


Table: zipcode_local

zipcode_local Structure
F-Key Name Type Description
zipcode_local_id serial PRIMARY KEY
zip5 integer
local.local_id local_id integer

Index - Schema public


Function: _add_overview_constraint(ovschema name, ovtable name, ovcolumn name, refschema name, reftable name, refcolumn name, factor integer)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_overview_' || $3;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (_overview_constraint(' || quote_ident($3)
			|| ',' || $7
			|| ',' || quote_literal($4)
			|| ',' || quote_literal($5)
			|| ',' || quote_literal($6)
			|| '))';

		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint(cn name, sql text)

Returns: boolean

Language: PLPGSQL

	BEGIN
		BEGIN
			EXECUTE sql;
		EXCEPTION
			WHEN duplicate_object THEN
				RAISE NOTICE 'The constraint "%" already exists.  To replace the existing constraint, delete the constraint and call ApplyRasterConstraints again', cn;
			WHEN OTHERS THEN
				RAISE NOTICE 'Unable to add constraint: %', cn;
				RAISE NOTICE 'SQL used for failed constraint: %', sql;
				RAISE NOTICE 'Returned error message: %', SQLERRM;
				RETURN FALSE;
		END;

		RETURN TRUE;
	END;
	

Function: _add_raster_constraint_alignment(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr text;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_same_alignment_' || $3;

		sql := 'SELECT st_makeemptyraster(1, 1, upperleftx, upperlefty, scalex, scaley, skewx, skewy, srid) FROM st_metadata((SELECT '
			|| quote_ident($3)
			|| ' FROM ' || fqtn || ' LIMIT 1))';
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the alignment of a sample raster';
			RETURN FALSE;
		END;

		sql := 'ALTER TABLE ' || fqtn ||
			' ADD CONSTRAINT ' || quote_ident(cn) ||
			' CHECK (st_samealignment(' || quote_ident($3) || ', ''' || attr || '''::raster))';
		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_blocksize(rastschema name, rasttable name, rastcolumn name, axis text)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attrset integer[];
		attr integer;
	BEGIN
		IF lower($4) != 'width' AND lower($4) != 'height' THEN
			RAISE EXCEPTION 'axis must be either "width" or "height"';
			RETURN FALSE;
		END IF;

		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_' || $4 || '_' || $3;

		sql := 'SELECT st_' || $4 || '('
			|| quote_ident($3)
			|| ') FROM ' || fqtn
			|| ' GROUP BY 1 ORDER BY count(*) DESC';
		BEGIN
			attrset := ARRAY[]::integer[];
			FOR attr IN EXECUTE sql LOOP
				attrset := attrset || attr;
			END LOOP;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the % of a sample raster', $4;
			RETURN FALSE;
		END;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (st_' || $4 || '('
			|| quote_ident($3)
			|| ') IN (' || array_to_string(attrset, ',') || '))';
		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_coverage_tile(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;

		_scalex double precision;
		_scaley double precision;
		_skewx double precision;
		_skewy double precision;
		_tilewidth integer;
		_tileheight integer;
		_alignment boolean;

		_covextent geometry;
		_covrast raster;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_coverage_tile_' || $3;

		-- metadata
		BEGIN
			sql := 'WITH foo AS (SELECT ST_Metadata(' || quote_ident($3) || ') AS meta, ST_ConvexHull(' || quote_ident($3) || ') AS hull FROM ' || fqtn || ') SELECT max((meta).scalex), max((meta).scaley), max((meta).skewx), max((meta).skewy), max((meta).width), max((meta).height), ST_Union(hull) FROM foo';
			EXECUTE sql INTO _scalex, _scaley, _skewx, _skewy, _tilewidth, _tileheight, _covextent;
		EXCEPTION WHEN OTHERS THEN
		END;

		-- rasterize extent
		BEGIN
			_covrast := ST_AsRaster(_covextent, _scalex, _scaley, '8BUI', 1, 0, NULL, NULL, _skewx, _skewy);
			IF _covrast IS NULL THEN
				RAISE NOTICE 'Unable to create coverage raster. Cannot add coverage tile constraint';
				RETURN FALSE;
			END IF;

			-- remove band
			_covrast := ST_MakeEmptyRaster(_covrast);
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to create coverage raster. Cannot add coverage tile constraint';
			RETURN FALSE;
		END;

		sql := 'ALTER TABLE ' || fqtn ||
			' ADD CONSTRAINT ' || quote_ident(cn) ||
			' CHECK (st_iscoveragetile(' || quote_ident($3) || ', ''' || _covrast || '''::raster, ' || _tilewidth || ', ' || _tileheight || '))';
		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_extent(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr text;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_max_extent_' || $3;

		sql := 'SELECT st_ashexewkb(st_union(st_convexhull('
			|| quote_ident($3)
			|| '))) FROM '
			|| fqtn;
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the extent of the raster column. Attempting memory efficient (slower) approach';

			sql := 'SELECT st_ashexewkb(st_memunion(st_convexhull('
				|| quote_ident($3)
				|| '))) FROM '
				|| fqtn;
			BEGIN
				EXECUTE sql INTO attr;
			EXCEPTION WHEN OTHERS THEN
				RAISE NOTICE 'Still unable to get the extent of the raster column. Cannot add extent constraint';
				RETURN FALSE;
			END;
		END;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (st_coveredby(st_convexhull('
			|| quote_ident($3)
			|| '), ''' || attr || '''::geometry))';
		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_nodata_values(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr double precision[];
		max int;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_nodata_values_' || $3;

		sql := 'SELECT _raster_constraint_nodata_values(' || quote_ident($3)
			|| ') FROM ' || fqtn
			|| ' LIMIT 1';
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the nodata values of a sample raster';
			RETURN FALSE;
		END;
		max := array_length(attr, 1);
		IF max < 1 OR max IS NULL THEN
			RAISE NOTICE 'Unable to get the nodata values of a sample raster';
			RETURN FALSE;
		END IF;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (_raster_constraint_nodata_values(' || quote_ident($3)
			|| ')::numeric(16,10)[] = ''{';
		FOR x in 1..max LOOP
			IF attr[x] IS NULL THEN
				sql := sql || 'NULL';
			ELSE
				sql := sql || attr[x];
			END IF;
			IF x < max THEN
				sql := sql || ',';
			END IF;
		END LOOP;
		sql := sql || '}''::numeric(16,10)[])';

		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_num_bands(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr int;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_num_bands_' || $3;

		sql := 'SELECT st_numbands(' || quote_ident($3)
			|| ') FROM ' || fqtn
			|| ' LIMIT 1';
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the number of bands of a sample raster';
			RETURN FALSE;
		END;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (st_numbands(' || quote_ident($3)
			|| ') = ' || attr
			|| ')';
		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_out_db(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr boolean[];
		max int;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_out_db_' || $3;

		sql := 'SELECT _raster_constraint_out_db(' || quote_ident($3)
			|| ') FROM ' || fqtn
			|| ' LIMIT 1';
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the out-of-database bands of a sample raster';
			RETURN FALSE;
		END;
		max := array_length(attr, 1);
		IF max < 1 OR max IS NULL THEN
			RAISE NOTICE 'Unable to get the out-of-database bands of a sample raster';
			RETURN FALSE;
		END IF;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (_raster_constraint_out_db(' || quote_ident($3)
			|| ') = ''{';
		FOR x in 1..max LOOP
			IF attr[x] IS FALSE THEN
				sql := sql || 'FALSE';
			ELSE
				sql := sql || 'TRUE';
			END IF;
			IF x < max THEN
				sql := sql || ',';
			END IF;
		END LOOP;
		sql := sql || '}''::boolean[])';

		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_pixel_types(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr text[];
		max int;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_pixel_types_' || $3;

		sql := 'SELECT _raster_constraint_pixel_types(' || quote_ident($3)
			|| ') FROM ' || fqtn
			|| ' LIMIT 1';
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the pixel types of a sample raster';
			RETURN FALSE;
		END;
		max := array_length(attr, 1);
		IF max < 1 OR max IS NULL THEN
			RAISE NOTICE 'Unable to get the pixel types of a sample raster';
			RETURN FALSE;
		END IF;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (_raster_constraint_pixel_types(' || quote_ident($3)
			|| ') = ''{';
		FOR x in 1..max LOOP
			sql := sql || '"' || attr[x] || '"';
			IF x < max THEN
				sql := sql || ',';
			END IF;
		END LOOP;
		sql := sql || '}''::text[])';

		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_scale(rastschema name, rasttable name, rastcolumn name, axis bpchar)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr double precision;
	BEGIN
		IF lower($4) != 'x' AND lower($4) != 'y' THEN
			RAISE EXCEPTION 'axis must be either "x" or "y"';
			RETURN FALSE;
		END IF;

		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_scale' || $4 || '_' || $3;

		sql := 'SELECT st_scale' || $4 || '('
			|| quote_ident($3)
			|| ') FROM '
			|| fqtn
			|| ' LIMIT 1';
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the %-scale of a sample raster', upper($4);
			RETURN FALSE;
		END;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (st_scale' || $4 || '('
			|| quote_ident($3)
			|| ')::numeric(25,10) = (' || attr || ')::numeric(25,10))';
		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_spatially_unique(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr text;
		meta record;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_spatially_unique_' || quote_ident($2) || '_'|| $3;

		sql := 'ALTER TABLE ' || fqtn ||
			' ADD CONSTRAINT ' || quote_ident(cn) ||
			' EXCLUDE ((' || quote_ident($3) || '::geometry) WITH =)';
		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _add_raster_constraint_srid(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		cn name;
		sql text;
		attr int;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		cn := 'enforce_srid_' || $3;

		sql := 'SELECT st_srid('
			|| quote_ident($3)
			|| ') FROM ' || fqtn
			|| ' LIMIT 1';
		BEGIN
			EXECUTE sql INTO attr;
		EXCEPTION WHEN OTHERS THEN
			RAISE NOTICE 'Unable to get the SRID of a sample raster';
			RETURN FALSE;
		END;

		sql := 'ALTER TABLE ' || fqtn
			|| ' ADD CONSTRAINT ' || quote_ident(cn)
			|| ' CHECK (st_srid('
			|| quote_ident($3)
			|| ') = ' || attr || ')';

		RETURN _add_raster_constraint(cn, sql);
	END;
	

Function: _drop_overview_constraint(ovschema name, ovtable name, ovcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_overview_' || $3) 

Function: _drop_raster_constraint(rastschema name, rasttable name, cn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
	BEGIN
		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		BEGIN
			EXECUTE 'ALTER TABLE '
				|| fqtn
				|| ' DROP CONSTRAINT '
				|| quote_ident(cn);
			RETURN TRUE;
		EXCEPTION
			WHEN undefined_object THEN
				RAISE NOTICE 'The constraint "%" does not exist.  Skipping', cn;
			WHEN OTHERS THEN
				RAISE NOTICE 'Unable to drop constraint "%"', cn;
				RETURN FALSE;
		END;

		RETURN TRUE;
	END;
	

Function: _drop_raster_constraint_alignment(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_same_alignment_' || $3) 

Function: _drop_raster_constraint_blocksize(rastschema name, rasttable name, rastcolumn name, axis text)

Returns: boolean

Language: PLPGSQL

	BEGIN
		IF lower($4) != 'width' AND lower($4) != 'height' THEN
			RAISE EXCEPTION 'axis must be either "width" or "height"';
			RETURN FALSE;
		END IF;

		RETURN _drop_raster_constraint($1, $2, 'enforce_' || $4 || '_' || $3);
	END;
	

Function: _drop_raster_constraint_coverage_tile(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_coverage_tile_' || $3) 

Function: _drop_raster_constraint_extent(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_max_extent_' || $3) 

Function: _drop_raster_constraint_nodata_values(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_nodata_values_' || $3) 

Function: _drop_raster_constraint_num_bands(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_num_bands_' || $3) 

Function: _drop_raster_constraint_out_db(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_out_db_' || $3) 

Function: _drop_raster_constraint_pixel_types(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_pixel_types_' || $3) 

Function: _drop_raster_constraint_regular_blocking(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_regular_blocking_' || $3) 

Function: _drop_raster_constraint_scale(rastschema name, rasttable name, rastcolumn name, axis bpchar)

Returns: boolean

Language: PLPGSQL

	BEGIN
		IF lower($4) != 'x' AND lower($4) != 'y' THEN
			RAISE EXCEPTION 'axis must be either "x" or "y"';
			RETURN FALSE;
		END IF;

		RETURN _drop_raster_constraint($1, $2, 'enforce_scale' || $4 || '_' || $3);
	END;
	

Function: _drop_raster_constraint_spatially_unique(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		cn text;
	BEGIN
		SELECT
			s.conname INTO cn
		FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s, pg_index idx, pg_operator op
		WHERE n.nspname = $1
			AND c.relname = $2
			AND a.attname = $3
			AND a.attrelid = c.oid
			AND s.connamespace = n.oid
			AND s.conrelid = c.oid
			AND s.contype = 'x'
			AND 0::smallint = ANY (s.conkey)
			AND idx.indexrelid = s.conindid
			AND pg_get_indexdef(idx.indexrelid, 1, true) LIKE '(' || quote_ident($3) || '::geometry)'
			AND s.conexclop[1] = op.oid
			AND op.oprname = '=';

		RETURN _drop_raster_constraint($1, $2, cn); 
	END;
	

Function: _drop_raster_constraint_srid(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

 SELECT _drop_raster_constraint($1, $2, 'enforce_srid_' || $3) 

Function: _get_parser_from_curcfg()

Returns: text

Language: SQL

 select prs_name from pg_ts_cfg where oid = show_curcfg() 

Function: _lt_q_regex(public.ltree[], public.lquery[])

Returns: boolean

Language: C

_lt_q_regex

Function: _lt_q_rregex(public.lquery[], public.ltree[])

Returns: boolean

Language: C

_lt_q_rregex

Function: _ltq_extract_regex(public.ltree[], public.lquery)

Returns: ltree

Language: C

_ltq_extract_regex

Function: _ltq_regex(public.ltree[], public.lquery)

Returns: boolean

Language: C

_ltq_regex

Function: _ltq_rregex(public.lquery, public.ltree[])

Returns: boolean

Language: C

_ltq_rregex

Function: _ltree_compress(internal)

Returns: internal

Language: C

_ltree_compress

Function: _ltree_consistent(internal, internal, smallint)

Returns: boolean

Language: C

_ltree_consistent

Function: _ltree_extract_isparent(public.ltree[], public.ltree)

Returns: ltree

Language: C

_ltree_extract_isparent

Function: _ltree_extract_risparent(public.ltree[], public.ltree)

Returns: ltree

Language: C

_ltree_extract_risparent

Function: _ltree_isparent(public.ltree[], public.ltree)

Returns: boolean

Language: C

_ltree_isparent

Function: _ltree_penalty(internal, internal, internal)

Returns: internal

Language: C

_ltree_penalty

Function: _ltree_picksplit(internal, internal)

Returns: internal

Language: C

_ltree_picksplit

Function: _ltree_r_isparent(public.ltree, public.ltree[])

Returns: boolean

Language: C

_ltree_r_isparent

Function: _ltree_r_risparent(public.ltree, public.ltree[])

Returns: boolean

Language: C

_ltree_r_risparent

Function: _ltree_risparent(public.ltree[], public.ltree)

Returns: boolean

Language: C

_ltree_risparent

Function: _ltree_same(internal, internal, internal)

Returns: internal

Language: C

_ltree_same

Function: _ltree_union(internal, internal)

Returns: integer

Language: C

_ltree_union

Function: _ltxtq_exec(public.ltree[], public.ltxtquery)

Returns: boolean

Language: C

_ltxtq_exec

Function: _ltxtq_extract_exec(public.ltree[], public.ltxtquery)

Returns: ltree

Language: C

_ltxtq_extract_exec

Function: _ltxtq_rexec(public.ltxtquery, public.ltree[])

Returns: boolean

Language: C

_ltxtq_rexec

Function: _overview_constraint(ov public.raster, factor integer, refschema name, reftable name, refcolumn name)

Returns: boolean

Language: SQL

 SELECT COALESCE((SELECT TRUE FROM raster_columns WHERE r_table_catalog = current_database() AND r_table_schema = $3 AND r_table_name = $4 AND r_raster_column = $5), FALSE) 

Function: _overview_constraint_info(ovschema name, ovtable name, ovcolumn name)

Returns: record

Language: SQL

	SELECT
		split_part(split_part(s.consrc, '''::name', 1), '''', 2)::name,
		split_part(split_part(s.consrc, '''::name', 2), '''', 2)::name,
		split_part(split_part(s.consrc, '''::name', 3), '''', 2)::name,
		trim(both from split_part(s.consrc, ',', 2))::integer
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%_overview_constraint(%'
	

Function: _postgis_deprecate(oldname text, newname text, version text)

Returns: void

Language: PLPGSQL

DECLARE
  curver_text text;
BEGIN
  --
  -- Raises a NOTICE if it was deprecated in this version,
  -- a WARNING if in a previous version (only up to minor version checked)
  --
    curver_text := '2.1.8';
    IF split_part(curver_text,'.',1)::int > split_part(version,'.',1)::int OR
       ( split_part(curver_text,'.',1) = split_part(version,'.',1) AND
         split_part(curver_text,'.',2) != split_part(version,'.',2) )
    THEN
      RAISE WARNING '% signature was deprecated in %. Please use %', oldname, version, newname;
    ELSE
      RAISE DEBUG '% signature was deprecated in %. Please use %', oldname, version, newname;
    END IF;
END;

Function: _postgis_join_selectivity(regclass, text, regclass, text, text)

Returns: double precision

Language: C

_postgis_gserialized_joinsel

Function: _postgis_selectivity(tbl regclass, att_name text, geom public.geometry, mode text)

Returns: double precision

Language: C

_postgis_gserialized_sel

Function: _postgis_stats(tbl regclass, att_name text, text)

Returns: text

Language: C

_postgis_gserialized_stats

Function: _raster_constraint_info_alignment(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

	SELECT
		TRUE
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%st_samealignment(%';
	

Function: _raster_constraint_info_blocksize(rastschema name, rasttable name, rastcolumn name, axis text)

Returns: integer

Language: SQL

	SELECT
		CASE
			WHEN strpos(s.consrc, 'ANY (ARRAY[') > 0 THEN
				split_part((regexp_matches(s.consrc, E'ARRAY\\[(.*?){1}\\]'))[1], ',', 1)::integer
			ELSE
				replace(replace(split_part(s.consrc, '= ', 2), ')', ''), '(', '')::integer
			END
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%st_' || $4 || '(%= %';
	

Function: _raster_constraint_info_coverage_tile(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

	SELECT
		TRUE
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%st_iscoveragetile(%';
	

Function: _raster_constraint_info_extent(rastschema name, rasttable name, rastcolumn name)

Returns: geometry

Language: SQL

	SELECT
		trim(both '''' from split_part(trim(split_part(s.consrc, ',', 2)), '::', 1))::geometry
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%st_coveredby(st_convexhull(%';
	

Function: _raster_constraint_info_nodata_values(rastschema name, rasttable name, rastcolumn name)

Returns: double precision[]

Language: SQL

	SELECT
		trim(both '''' from split_part(replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', ''), '::', 1))::double precision[]
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%_raster_constraint_nodata_values(%';
	

Function: _raster_constraint_info_num_bands(rastschema name, rasttable name, rastcolumn name)

Returns: integer

Language: SQL

	SELECT
		replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '')::integer
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%st_numbands(%';
	

Function: _raster_constraint_info_out_db(rastschema name, rasttable name, rastcolumn name)

Returns: boolean[]

Language: SQL

	SELECT
		trim(both '''' from split_part(replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', ''), '::', 1))::boolean[]
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%_raster_constraint_out_db(%';
	

Function: _raster_constraint_info_pixel_types(rastschema name, rasttable name, rastcolumn name)

Returns: text[]

Language: SQL

	SELECT
		trim(both '''' from split_part(replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', ''), '::', 1))::text[]
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%_raster_constraint_pixel_types(%';
	

Function: _raster_constraint_info_regular_blocking(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: PLPGSQL

	DECLARE
		covtile boolean;
		spunique boolean;
	BEGIN
		-- check existance of constraints
		-- coverage tile constraint
		covtile := COALESCE(_raster_constraint_info_coverage_tile($1, $2, $3), FALSE);

		-- spatially unique constraint
		spunique := COALESCE(_raster_constraint_info_spatially_unique($1, $2, $3), FALSE);

		RETURN (covtile AND spunique);
	END;
	

Function: _raster_constraint_info_scale(rastschema name, rasttable name, rastcolumn name, axis bpchar)

Returns: double precision

Language: SQL

	SELECT
		replace(replace(split_part(split_part(s.consrc, ' = ', 2), '::', 1), ')', ''), '(', '')::double precision
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%st_scale' || $4 || '(% = %';
	

Function: _raster_constraint_info_spatially_unique(rastschema name, rasttable name, rastcolumn name)

Returns: boolean

Language: SQL

	SELECT
		TRUE
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s, pg_index idx, pg_operator op
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND s.contype = 'x'
		AND 0::smallint = ANY (s.conkey)
		AND idx.indexrelid = s.conindid
		AND pg_get_indexdef(idx.indexrelid, 1, true) LIKE '(' || quote_ident($3) || '::geometry)'
		AND s.conexclop[1] = op.oid
		AND op.oprname = '=';
	

Function: _raster_constraint_info_srid(rastschema name, rasttable name, rastcolumn name)

Returns: integer

Language: SQL

	SELECT
		replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '')::integer
	FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
	WHERE n.nspname = $1
		AND c.relname = $2
		AND a.attname = $3
		AND a.attrelid = c.oid
		AND s.connamespace = n.oid
		AND s.conrelid = c.oid
		AND a.attnum = ANY (s.conkey)
		AND s.consrc LIKE '%st_srid(% = %';
	

Function: _raster_constraint_nodata_values(rast public.raster)

Returns: double precision[]

Language: SQL

 SELECT array_agg(nodatavalue)::double precision[] FROM st_bandmetadata($1, ARRAY[]::int[]); 

Function: _raster_constraint_out_db(rast public.raster)

Returns: boolean[]

Language: SQL

 SELECT array_agg(isoutdb)::boolean[] FROM st_bandmetadata($1, ARRAY[]::int[]); 

Function: _raster_constraint_pixel_types(rast public.raster)

Returns: text[]

Language: SQL

 SELECT array_agg(pixeltype)::text[] FROM st_bandmetadata($1, ARRAY[]::int[]); 

Function: _st_3ddfullywithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: C

LWGEOM_dfullywithin3d

Function: _st_3ddwithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: C

LWGEOM_dwithin3d

Function: _st_3dintersects(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

intersects3d

Function: _st_asgeojson(integer, public.geography, integer, integer)

Returns: text

Language: C

geography_as_geojson

Function: _st_asgeojson(integer, public.geometry, integer, integer)

Returns: text

Language: C

LWGEOM_asGeoJson

Function: _st_asgml(integer, public.geography, integer, integer, text, text)

Returns: text

Language: C

geography_as_gml

Function: _st_asgml(integer, public.geometry, integer, integer, text, text)

Returns: text

Language: C

LWGEOM_asGML

Function: _st_askml(integer, public.geography, integer, text)

Returns: text

Language: C

geography_as_kml

Function: _st_askml(integer, public.geometry, integer, text)

Returns: text

Language: C

LWGEOM_asKML

Function: _st_aspect4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		x integer;
		y integer;
		z integer;

		_width double precision;
		_height double precision;
		_units text;

		dz_dx double precision;
		dz_dy double precision;
		aspect double precision;
		halfpi double precision;

		_value double precision[][][];
		ndims int;
	BEGIN
		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		IF (
			array_lower(_value, 2) != 1 OR array_upper(_value, 2) != 3 OR
			array_lower(_value, 3) != 1 OR array_upper(_value, 3) != 3
		) THEN
			RAISE EXCEPTION 'First parameter of function must be a 1x3x3 array with each of the lower bounds starting from 1';
		END IF;

		IF array_length(userargs, 1) < 3 THEN
			RAISE EXCEPTION 'At least three elements must be provided for the third parameter';
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		z := array_lower(_value, 1);

		_width := userargs[1]::double precision;
		_height := userargs[2]::double precision;
		_units := userargs[3];

		

		-- check that center pixel isn't NODATA
		IF _value[z][2][2] IS NULL THEN
			RETURN NULL;
		-- substitute center pixel for any neighbor pixels that are NODATA
		ELSE
			FOR y IN 1..3 LOOP
				FOR x IN 1..3 LOOP
					IF _value[z][y][x] IS NULL THEN
						_value[z][y][x] = _value[z][2][2];
					END IF;
				END LOOP;
			END LOOP;
		END IF;

		dz_dy := ((_value[z][3][1] + _value[z][3][2] + _value[z][3][2] + _value[z][3][3]) -
			(_value[z][1][1] + _value[z][1][2] + _value[z][1][2] + _value[z][1][3]));
		dz_dx := ((_value[z][1][3] + _value[z][2][3] + _value[z][2][3] + _value[z][3][3]) -
			(_value[z][1][1] + _value[z][2][1] + _value[z][2][1] + _value[z][3][1]));

		-- aspect is flat
		IF abs(dz_dx) = 0::double precision AND abs(dz_dy) = 0::double precision THEN
			RETURN -1;
		END IF;

		-- aspect is in radians
		aspect := atan2(dz_dy, -dz_dx);

		-- north = 0, pi/2 = east, 3pi/2 = west
		halfpi := pi() / 2.0;
		IF aspect > halfpi THEN
			aspect := (5.0 * halfpi) - aspect;
		ELSE
			aspect := halfpi - aspect;
		END IF;

		IF aspect = 2 * pi() THEN
			aspect := 0.;
		END IF;

		-- output depends on user preference
		CASE substring(upper(trim(leading from _units)) for 3)
			-- radians
			WHEN 'rad' THEN
				RETURN aspect;
			-- degrees (default)
			ELSE
				RETURN degrees(aspect);
		END CASE;

	END;
	

Function: _st_asraster(geom public.geometry, scalex double precision, scaley double precision, width integer, height integer, pixeltype text[], value double precision[], nodataval double precision[], upperleftx double precision, upperlefty double precision, gridx double precision, gridy double precision, skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: C

RASTER_asRaster

Function: _st_asx3d(integer, public.geometry, integer, integer, text)

Returns: text

Language: C

LWGEOM_asX3D

Function: _st_bestsrid(public.geography)

Returns: integer

Language: SQL

SELECT _ST_BestSRID($1,$1)

Function: _st_bestsrid(public.geography, public.geography)

Returns: integer

Language: C

geography_bestsrid

Function: _st_buffer(public.geometry, double precision, cstring)

Returns: geometry

Language: C

buffer

Function: _st_clip(rast public.raster, nband integer[], geom public.geometry, nodataval double precision[], crop boolean)

Returns: raster

Language: C

RASTER_clip

Function: _st_colormap(rast public.raster, nband integer, colormap text, method text)

Returns: raster

Language: C

RASTER_colorMap

Function: _st_concavehull(param_inputgeom public.geometry)

Returns: geometry

Language: PLPGSQL

	DECLARE     
	vexhull GEOMETRY;
	var_resultgeom geometry;
	var_inputgeom geometry;
	vexring GEOMETRY;
	cavering GEOMETRY;
	cavept geometry[];
	seglength double precision;
	var_tempgeom geometry;
	scale_factor integer := 1;
	i integer;
	
	BEGIN

		-- First compute the ConvexHull of the geometry
		vexhull := ST_ConvexHull(param_inputgeom);
		var_inputgeom := param_inputgeom;
		--A point really has no concave hull
		IF ST_GeometryType(vexhull) = 'ST_Point' OR ST_GeometryType(vexHull) = 'ST_LineString' THEN
			RETURN vexhull;
		END IF;

		-- convert the hull perimeter to a linestring so we can manipulate individual points
		vexring := CASE WHEN ST_GeometryType(vexhull) = 'ST_LineString' THEN vexhull ELSE ST_ExteriorRing(vexhull) END;
		IF abs(ST_X(ST_PointN(vexring,1))) < 1 THEN --scale the geometry to prevent stupid precision errors - not sure it works so make low for now
			scale_factor := 100;
			vexring := ST_Scale(vexring, scale_factor,scale_factor);
			var_inputgeom := ST_Scale(var_inputgeom, scale_factor, scale_factor);
			--RAISE NOTICE 'Scaling';
		END IF;
		seglength := ST_Length(vexring)/least(ST_NPoints(vexring)*2,1000) ;

		vexring := ST_Segmentize(vexring, seglength);
		-- find the point on the original geom that is closest to each point of the convex hull and make a new linestring out of it.
		cavering := ST_Collect(
			ARRAY(

				SELECT 
					ST_ClosestPoint(var_inputgeom, pt ) As the_geom
					FROM (
						SELECT  ST_PointN(vexring, n ) As pt, n
							FROM 
							generate_series(1, ST_NPoints(vexring) ) As n
						) As pt
				
				)
			)
		; 
		

		var_resultgeom := ST_MakeLine(geom) 
			FROM ST_Dump(cavering) As foo;

		IF ST_IsSimple(var_resultgeom) THEN
			var_resultgeom := ST_MakePolygon(var_resultgeom);
			--RAISE NOTICE 'is Simple: %', var_resultgeom;
		ELSE 
			--RAISE NOTICE 'is not Simple: %', var_resultgeom;
			var_resultgeom := ST_ConvexHull(var_resultgeom);
		END IF;
		
		IF scale_factor > 1 THEN -- scale the result back
			var_resultgeom := ST_Scale(var_resultgeom, 1/scale_factor, 1/scale_factor);
		END IF;
		RETURN var_resultgeom;
	
	END;

Function: _st_contains(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

contains

Function: _st_contains(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: C

RASTER_contains

Function: _st_containsproperly(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

containsproperly

Function: _st_containsproperly(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: C

RASTER_containsProperly

Function: _st_convertarray4ma(value double precision[])

Returns: double precision[]

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		x int;
		y int;
	BEGIN
		IF array_ndims(value) != 2 THEN
			RAISE EXCEPTION 'Function parameter must be a 2-dimension array';
		END IF;

		_value := array_fill(NULL::double precision, ARRAY[1, array_length(value, 1), array_length(value, 2)]::int[], ARRAY[1, array_lower(value, 1), array_lower(value, 2)]::int[]);

		-- row
		FOR y IN array_lower(value, 1)..array_upper(value, 1) LOOP
			-- column
			FOR x IN array_lower(value, 2)..array_upper(value, 2) LOOP
				_value[1][y][x] = value[y][x];
			END LOOP;
		END LOOP;

		RETURN _value;
	END;
	

Function: _st_count(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: bigint

Language: PLPGSQL

	DECLARE
		rtn bigint;
	BEGIN
		IF exclude_nodata_value IS FALSE THEN
			SELECT width * height INTO rtn FROM ST_Metadata(rast);
		ELSE
			SELECT count INTO rtn FROM _st_summarystats($1, $2, $3, $4);
		END IF;

		RETURN rtn;
	END;
	

Function: _st_count(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: bigint

Language: PLPGSQL

	DECLARE
		curs refcursor;

		ctable text;
		ccolumn text;
		rast raster;

		rtn bigint;
		tmp bigint;
	BEGIN
		-- nband
		IF nband < 1 THEN
			RAISE WARNING 'Invalid band index (must use 1-based). Returning NULL';
			RETURN NULL;
		END IF;

		-- sample percent
		IF sample_percent < 0 OR sample_percent > 1 THEN
			RAISE WARNING 'Invalid sample percentage (must be between 0 and 1). Returning NULL';
			RETURN NULL;
		END IF;

		-- exclude_nodata_value IS TRUE
		IF exclude_nodata_value IS TRUE THEN
			SELECT count INTO rtn FROM _st_summarystats($1, $2, $3, $4, $5);
			RETURN rtn;
		END IF;

		-- clean rastertable and rastercolumn
		ctable := quote_ident(rastertable);
		ccolumn := quote_ident(rastercolumn);

		BEGIN
			OPEN curs FOR EXECUTE 'SELECT '
					|| ccolumn
					|| ' FROM '
					|| ctable
					|| ' WHERE '
					|| ccolumn
					|| ' IS NOT NULL';
		EXCEPTION
			WHEN OTHERS THEN
				RAISE WARNING 'Invalid table or column name. Returning NULL';
				RETURN NULL;
		END;

		rtn := 0;
		LOOP
			FETCH curs INTO rast;
			EXIT WHEN NOT FOUND;

			SELECT (width * height) INTO tmp FROM ST_Metadata(rast);
			rtn := rtn + tmp;
		END LOOP;

		CLOSE curs;

		RETURN rtn;
	END;
	

Function: _st_coveredby(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

coveredby

Function: _st_coveredby(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: C

RASTER_coveredby

Function: _st_covers(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

covers

Function: _st_covers(public.geography, public.geography)

Returns: boolean

Language: C

geography_covers

Function: _st_covers(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: C

RASTER_covers

Function: _st_crosses(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

crosses

Function: _st_dfullywithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: C

LWGEOM_dfullywithin

Function: _st_dfullywithin(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer, distance double precision)

Returns: boolean

Language: C

RASTER_dfullywithin

Function: _st_distance(public.geography, public.geography, double precision, boolean)

Returns: double precision

Language: C

geography_distance

Function: _st_distancetree(public.geography, public.geography)

Returns: double precision

Language: SQL

SELECT _ST_DistanceTree($1, $2, 0.0, true)

Function: _st_distancetree(public.geography, public.geography, double precision, boolean)

Returns: double precision

Language: C

geography_distance_tree

Function: _st_distanceuncached(public.geography, public.geography)

Returns: double precision

Language: SQL

SELECT _ST_DistanceUnCached($1, $2, 0.0, true)

Function: _st_distanceuncached(public.geography, public.geography, boolean)

Returns: double precision

Language: SQL

SELECT _ST_DistanceUnCached($1, $2, 0.0, $3)

Function: _st_distanceuncached(public.geography, public.geography, double precision, boolean)

Returns: double precision

Language: C

geography_distance_uncached

Function: _st_dumppoints(the_geom public.geometry, cur_path integer[])

Returns: SET OF geometry_dump

Language: PLPGSQL

DECLARE
  tmp geometry_dump;
  tmp2 geometry_dump;
  nb_points integer;
  nb_geom integer;
  i integer;
  j integer;
  g geometry;
  
BEGIN
  
  -- RAISE DEBUG '%,%', cur_path, ST_GeometryType(the_geom);

  -- Special case collections : iterate and return the DumpPoints of the geometries

  IF (ST_IsCollection(the_geom)) THEN
 
    i = 1;
    FOR tmp2 IN SELECT (ST_Dump(the_geom)).* LOOP

      FOR tmp IN SELECT * FROM _ST_DumpPoints(tmp2.geom, cur_path || tmp2.path) LOOP
	    RETURN NEXT tmp;
      END LOOP;
      i = i + 1;
      
    END LOOP;

    RETURN;
  END IF;
  

  -- Special case (POLYGON) : return the points of the rings of a polygon
  IF (ST_GeometryType(the_geom) = 'ST_Polygon') THEN

    FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
      RETURN NEXT tmp;
    END LOOP;
    
    j := ST_NumInteriorRings(the_geom);
    FOR i IN 1..j LOOP
        FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_InteriorRingN(the_geom, i), cur_path || ARRAY[i+1]) LOOP
          RETURN NEXT tmp;
        END LOOP;
    END LOOP;
    
    RETURN;
  END IF;

  -- Special case (TRIANGLE) : return the points of the external rings of a TRIANGLE
  IF (ST_GeometryType(the_geom) = 'ST_Triangle') THEN

    FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
      RETURN NEXT tmp;
    END LOOP;
    
    RETURN;
  END IF;

    
  -- Special case (POINT) : return the point
  IF (ST_GeometryType(the_geom) = 'ST_Point') THEN

    tmp.path = cur_path || ARRAY[1];
    tmp.geom = the_geom;

    RETURN NEXT tmp;
    RETURN;

  END IF;


  -- Use ST_NumPoints rather than ST_NPoints to have a NULL value if the_geom isn't
  -- a LINESTRING, CIRCULARSTRING.
  SELECT ST_NumPoints(the_geom) INTO nb_points;

  -- This should never happen
  IF (nb_points IS NULL) THEN
    RAISE EXCEPTION 'Unexpected error while dumping geometry %', ST_AsText(the_geom);
  END IF;

  FOR i IN 1..nb_points LOOP
    tmp.path = cur_path || ARRAY[i];
    tmp.geom := ST_PointN(the_geom, i);
    RETURN NEXT tmp;
  END LOOP;
   
END

Function: _st_dwithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: C

LWGEOM_dwithin

Function: _st_dwithin(public.geography, public.geography, double precision, boolean)

Returns: boolean

Language: C

geography_dwithin

Function: _st_dwithin(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer, distance double precision)

Returns: boolean

Language: C

RASTER_dwithin

Function: _st_dwithinuncached(public.geography, public.geography, double precision)

Returns: boolean

Language: SQL

SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithinUnCached($1, $2, $3, true)

Function: _st_dwithinuncached(public.geography, public.geography, double precision, boolean)

Returns: boolean

Language: C

geography_dwithin_uncached

Function: _st_equals(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

ST_Equals

Function: _st_expand(public.geography, double precision)

Returns: geography

Language: C

geography_expand

Function: _st_gdalwarp(rast public.raster, algorithm text, maxerr double precision, srid integer, scalex double precision, scaley double precision, gridx double precision, gridy double precision, skewx double precision, skewy double precision, width integer, height integer)

Returns: raster

Language: C

RASTER_GDALWarp

Function: _st_geomfromgml(text, integer)

Returns: geometry

Language: C

geom_from_gml

Function: _st_hillshade4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_pixwidth double precision;
		_pixheight double precision;
		_width double precision;
		_height double precision;
		_azimuth double precision;
		_altitude double precision;
		_bright double precision;
		_scale double precision;

		dz_dx double precision;
		dz_dy double precision;
		azimuth double precision;
		zenith double precision;
		slope double precision;
		aspect double precision;
		shade double precision;

		_value double precision[][][];
		ndims int;
		z int;
	BEGIN
		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		IF (
			array_lower(_value, 2) != 1 OR array_upper(_value, 2) != 3 OR
			array_lower(_value, 3) != 1 OR array_upper(_value, 3) != 3
		) THEN
			RAISE EXCEPTION 'First parameter of function must be a 1x3x3 array with each of the lower bounds starting from 1';
		END IF;

		IF array_length(userargs, 1) < 8 THEN
			RAISE EXCEPTION 'At least eight elements must be provided for the third parameter';
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		z := array_lower(_value, 1);

		_pixwidth := userargs[1]::double precision;
		_pixheight := userargs[2]::double precision;
		_width := userargs[3]::double precision;
		_height := userargs[4]::double precision;
		_azimuth := userargs[5]::double precision;
		_altitude := userargs[6]::double precision;
		_bright := userargs[7]::double precision;
		_scale := userargs[8]::double precision;

		-- check that pixel is not edge pixel
		IF (pos[1][1] = 1 OR pos[1][2] = 1) OR (pos[1][1] = _width OR pos[1][2] = _height) THEN
			RETURN NULL;
		END IF;

		-- clamp azimuth
		IF _azimuth < 0. THEN
			RAISE NOTICE 'Clamping provided azimuth value % to 0', _azimuth;
			_azimuth := 0.;
		ELSEIF _azimuth >= 360. THEN
			RAISE NOTICE 'Converting provided azimuth value % to be between 0 and 360', _azimuth;
			_azimuth := _azimuth - (360. * floor(_azimuth / 360.));
		END IF;
		azimuth := 360. - _azimuth + 90.;
		IF azimuth >= 360. THEN
			azimuth := azimuth - 360.;
		END IF;
		azimuth := radians(azimuth);
		--RAISE NOTICE 'azimuth = %', azimuth;

		-- clamp altitude
		IF _altitude < 0. THEN
			RAISE NOTICE 'Clamping provided altitude value % to 0', _altitude;
			_altitude := 0.;
		ELSEIF _altitude > 90. THEN
			RAISE NOTICE 'Clamping provided altitude value % to 90', _altitude;
			_altitude := 90.;
		END IF;
		zenith := radians(90. - _altitude);
		--RAISE NOTICE 'zenith = %', zenith;

		-- clamp bright
		IF _bright < 0. THEN
			RAISE NOTICE 'Clamping provided bright value % to 0', _bright;
			_bright := 0.;
		ELSEIF _bright > 255. THEN
			RAISE NOTICE 'Clamping provided bright value % to 255', _bright;
			_bright := 255.;
		END IF;

		dz_dy := ((_value[z][3][1] + _value[z][3][2] + _value[z][3][2] + _value[z][3][3]) -
			(_value[z][1][1] + _value[z][1][2] + _value[z][1][2] + _value[z][1][3])) / (8 * _pixheight);
		dz_dx := ((_value[z][1][3] + _value[z][2][3] + _value[z][2][3] + _value[z][3][3]) -
			(_value[z][1][1] + _value[z][2][1] + _value[z][2][1] + _value[z][3][1])) / (8 * _pixwidth);

		slope := atan(sqrt(dz_dx * dz_dx + dz_dy * dz_dy) / _scale);

		IF dz_dx != 0. THEN
			aspect := atan2(dz_dy, -dz_dx);

			IF aspect < 0. THEN
				aspect := aspect + (2.0 * pi());
			END IF;
		ELSE
			IF dz_dy > 0. THEN
				aspect := pi() / 2.;
			ELSEIF dz_dy < 0. THEN
				aspect := (2. * pi()) - (pi() / 2.);
			-- set to pi as that is the expected PostgreSQL answer in Linux
			ELSE
				aspect := pi();
			END IF;
		END IF;

		shade := _bright * ((cos(zenith) * cos(slope)) + (sin(zenith) * sin(slope) * cos(azimuth - aspect)));

		IF shade < 0. THEN
			shade := 0;
		END IF;

		RETURN shade;
	END;
	

Function: _st_histogram(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision, bins integer, width double precision[], right boolean, min double precision, max double precision)

Returns: SET OF record

Language: C

RASTER_histogram

Function: _st_histogram(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: C

RASTER_histogramCoverage

Function: _st_intersects(geom public.geometry, rast public.raster, nband integer)

Returns: boolean

Language: PLPGSQL

	DECLARE
		hasnodata boolean := TRUE;
		nodata float8 := 0.0;
		convexhull geometry;
		geomintersect geometry;
		x1w double precision := 0.0;
		x2w double precision := 0.0;
		y1w double precision := 0.0;
		y2w double precision := 0.0;
		x1 integer := 0;
		x2 integer := 0;
		x3 integer := 0;
		x4 integer := 0;
		y1 integer := 0;
		y2 integer := 0;
		y3 integer := 0;
		y4 integer := 0;
		x integer := 0;
		y integer := 0;
		xinc integer := 0;
		yinc integer := 0;
		pixelval double precision;
		bintersect boolean := FALSE;
		gtype text;
		scale float8;
		w int;
		h int;
	BEGIN
		IF ST_SRID(rast) != ST_SRID(geom) THEN
			RAISE EXCEPTION 'Raster and geometry do not have the same SRID';
		END IF;

		convexhull := ST_ConvexHull(rast);
		IF nband IS NOT NULL THEN
			SELECT CASE WHEN bmd.nodatavalue IS NULL THEN FALSE ELSE NULL END INTO hasnodata FROM ST_BandMetaData(rast, nband) AS bmd;
		END IF;

		IF ST_Intersects(geom, convexhull) IS NOT TRUE THEN
			RETURN FALSE;
		ELSEIF nband IS NULL OR hasnodata IS FALSE THEN
			RETURN TRUE;
		END IF;

		-- Get the intersection between with the geometry.
		-- We will search for withvalue pixel only in this area.
		geomintersect := st_intersection(geom, convexhull);

--RAISE NOTICE 'geomintersect=%', st_astext(geomintersect);

		-- If the intersection is empty, return false
		IF st_isempty(geomintersect) THEN
			RETURN FALSE;
		END IF;

		-- We create a minimalistic buffer around the intersection in order to scan every pixels
		-- that would touch the edge or intersect with the geometry
		SELECT sqrt(scalex * scalex + skewy * skewy), width, height INTO scale, w, h FROM ST_Metadata(rast);
		IF scale != 0 THEN
			geomintersect := st_buffer(geomintersect, scale / 1000000);
		END IF;

--RAISE NOTICE 'geomintersect2=%', st_astext(geomintersect);

		-- Find the world coordinates of the bounding box of the intersecting area
		x1w := st_xmin(geomintersect);
		y1w := st_ymin(geomintersect);
		x2w := st_xmax(geomintersect);
		y2w := st_ymax(geomintersect);
		nodata := st_bandnodatavalue(rast, nband);

--RAISE NOTICE 'x1w=%, y1w=%, x2w=%, y2w=%', x1w, y1w, x2w, y2w;

		-- Convert world coordinates to raster coordinates
		x1 := st_worldtorastercoordx(rast, x1w, y1w);
		y1 := st_worldtorastercoordy(rast, x1w, y1w);
		x2 := st_worldtorastercoordx(rast, x2w, y1w);
		y2 := st_worldtorastercoordy(rast, x2w, y1w);
		x3 := st_worldtorastercoordx(rast, x1w, y2w);
		y3 := st_worldtorastercoordy(rast, x1w, y2w);
		x4 := st_worldtorastercoordx(rast, x2w, y2w);
		y4 := st_worldtorastercoordy(rast, x2w, y2w);

--RAISE NOTICE 'x1=%, y1=%, x2=%, y2=%, x3=%, y3=%, x4=%, y4=%', x1, y1, x2, y2, x3, y3, x4, y4;

		-- Order the raster coordinates for the upcoming FOR loop.
		x1 := int4smaller(int4smaller(int4smaller(x1, x2), x3), x4);
		y1 := int4smaller(int4smaller(int4smaller(y1, y2), y3), y4);
		x2 := int4larger(int4larger(int4larger(x1, x2), x3), x4);
		y2 := int4larger(int4larger(int4larger(y1, y2), y3), y4);

		-- Make sure the range is not lower than 1.
		-- This can happen when world coordinate are exactly on the left border
		-- of the raster and that they do not span on more than one pixel.
		x1 := int4smaller(int4larger(x1, 1), w);
		y1 := int4smaller(int4larger(y1, 1), h);

		-- Also make sure the range does not exceed the width and height of the raster.
		-- This can happen when world coordinate are exactly on the lower right border
		-- of the raster.
		x2 := int4smaller(x2, w);
		y2 := int4smaller(y2, h);

--RAISE NOTICE 'x1=%, y1=%, x2=%, y2=%', x1, y1, x2, y2;

		-- Search exhaustively for withvalue pixel on a moving 3x3 grid
		-- (very often more efficient than searching on a mere 1x1 grid)
		FOR xinc in 0..2 LOOP
			FOR yinc in 0..2 LOOP
				FOR x IN x1+xinc..x2 BY 3 LOOP
					FOR y IN y1+yinc..y2 BY 3 LOOP
						-- Check first if the pixel intersects with the geometry. Often many won't.
						bintersect := NOT st_isempty(st_intersection(st_pixelaspolygon(rast, x, y), geom));

						IF bintersect THEN
							-- If the pixel really intersects, check its value. Return TRUE if with value.
							pixelval := st_value(rast, nband, x, y);
							IF pixelval != nodata THEN
								RETURN TRUE;
							END IF;
						END IF;
					END LOOP;
				END LOOP;
			END LOOP;
		END LOOP;

		RETURN FALSE;
	END;
	

Function: _st_intersects(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

intersects

Function: _st_intersects(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: C

RASTER_intersects

Function: _st_linecrossingdirection(geom1 public.geometry, geom2 public.geometry)

Returns: integer

Language: C

ST_LineCrossingDirection

Function: _st_longestline(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

LWGEOM_longestline2d

Function: _st_mapalgebra(rastbandargset public.rastbandarg[], callbackfunc regprocedure, pixeltype text, distancex integer, distancey integer, extenttype text, customextent public.raster, userargs text[])

Returns: raster

Language: C

RASTER_nMapAlgebra

Function: _st_mapalgebra(rastbandargset public.rastbandarg[], expression text, pixeltype text, extenttype text, nodata1expr text, nodata2expr text, nodatanodataval double precision)

Returns: raster

Language: C

RASTER_nMapAlgebraExpr

Function: _st_maxdistance(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

LWGEOM_maxdistance2d_linestring

Function: _st_neighborhood(rast public.raster, band integer, columnx integer, rowy integer, distancex integer, distancey integer, exclude_nodata_value boolean)

Returns: double precision[]

Language: C

RASTER_neighborhood

Function: _st_orderingequals(geometrya public.geometry, geometryb public.geometry)

Returns: boolean

Language: C

LWGEOM_same

Function: _st_overlaps(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

overlaps

Function: _st_overlaps(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: C

RASTER_overlaps

Function: _st_pixelaspolygons(rast public.raster, band integer, columnx integer, rowy integer, exclude_nodata_value boolean)

Returns: SET OF record

Language: C

RASTER_getPixelPolygons

Function: _st_pointoutside(public.geography)

Returns: geography

Language: C

geography_point_outside

Function: _st_quantile(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: C

RASTER_quantile

Function: _st_quantile(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: C

RASTER_quantileCoverage

Function: _st_rastertoworldcoord(rast public.raster, columnx integer, rowy integer)

Returns: record

Language: C

RASTER_rasterToWorldCoord

Function: _st_reclass(rast public.raster, reclassargset public.reclassarg[])

Returns: raster

Language: C

RASTER_reclass

Function: _st_roughness4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		x integer;
		y integer;
		z integer;

		minimum double precision;
		maximum double precision;

		_value double precision[][][];
		ndims int;
	BEGIN

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		z := array_lower(_value, 1);

		IF (
			array_lower(_value, 2) != 1 OR array_upper(_value, 2) != 3 OR
			array_lower(_value, 3) != 1 OR array_upper(_value, 3) != 3
		) THEN
			RAISE EXCEPTION 'First parameter of function must be a 1x3x3 array with each of the lower bounds starting from 1';
		END IF;

		-- check that center pixel isn't NODATA
		IF _value[z][2][2] IS NULL THEN
			RETURN NULL;
		-- substitute center pixel for any neighbor pixels that are NODATA
		ELSE
			FOR y IN 1..3 LOOP
				FOR x IN 1..3 LOOP
					IF _value[z][y][x] IS NULL THEN
						_value[z][y][x] = _value[z][2][2];
					END IF;
				END LOOP;
			END LOOP;
		END IF;

		minimum := _value[z][1][1];
		maximum := _value[z][1][1];

		FOR Y IN 1..3 LOOP
		    FOR X IN 1..3 LOOP
		    	 IF _value[z][y][x] < minimum THEN
			    minimum := _value[z][y][x];
			 ELSIF _value[z][y][x] > maximum THEN
			    maximum := _value[z][y][x];
			 END IF;
		    END LOOP;
		END LOOP;

		RETURN maximum - minimum;
	END;
	

Function: _st_samealignment_finalfn(agg public.agg_samealignment)

Returns: boolean

Language: SQL

 SELECT $1.aligned 

Function: _st_samealignment_transfn(agg public.agg_samealignment, rast public.raster)

Returns: agg_samealignment

Language: PLPGSQL

	DECLARE
		m record;
		aligned boolean;
	BEGIN
		IF agg IS NULL THEN
			agg.refraster := NULL;
			agg.aligned := NULL;
		END IF;

		IF rast IS NULL THEN
			agg.aligned := NULL;
		ELSE
			IF agg.refraster IS NULL THEN
				m := ST_Metadata(rast);
				agg.refraster := ST_MakeEmptyRaster(1, 1, m.upperleftx, m.upperlefty, m.scalex, m.scaley, m.skewx, m.skewy, m.srid);
				agg.aligned := TRUE;
			ELSE IF agg.aligned IS TRUE THEN
					agg.aligned := ST_SameAlignment(agg.refraster, rast);
				END IF;
			END IF;
		END IF;
		RETURN agg;
	END;
	

Function: _st_setvalues(rast public.raster, nband integer, x integer, y integer, newvalueset double precision[], noset boolean[], hasnosetvalue boolean, nosetvalue double precision, keepnodata boolean)

Returns: raster

Language: C

RASTER_setPixelValuesArray

Function: _st_slope4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		x integer;
		y integer;
		z integer;

		_pixwidth double precision;
		_pixheight double precision;
		_width double precision;
		_height double precision;
		_units text;
		_scale double precision;

		dz_dx double precision;
		dz_dy double precision;

		slope double precision;

		_value double precision[][][];
		ndims int;
	BEGIN

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		z := array_lower(_value, 1);

		IF (
			array_lower(_value, 2) != 1 OR array_upper(_value, 2) != 3 OR
			array_lower(_value, 3) != 1 OR array_upper(_value, 3) != 3
		) THEN
			RAISE EXCEPTION 'First parameter of function must be a 1x3x3 array with each of the lower bounds starting from 1';
		END IF;

		IF array_length(userargs, 1) < 6 THEN
			RAISE EXCEPTION 'At least six elements must be provided for the third parameter';
		END IF;

		_pixwidth := userargs[1]::double precision;
		_pixheight := userargs[2]::double precision;
		_width := userargs[3]::double precision;
		_height := userargs[4]::double precision;
		_units := userargs[5];
		_scale := userargs[6]::double precision;

		
		-- check that center pixel isn't NODATA
		IF _value[z][2][2] IS NULL THEN
			RETURN NULL;
		-- substitute center pixel for any neighbor pixels that are NODATA
		ELSE
			FOR y IN 1..3 LOOP
				FOR x IN 1..3 LOOP
					IF _value[z][y][x] IS NULL THEN
						_value[z][y][x] = _value[z][2][2];
					END IF;
				END LOOP;
			END LOOP;
		END IF;

		dz_dy := ((_value[z][3][1] + _value[z][3][2] + _value[z][3][2] + _value[z][3][3]) -
			(_value[z][1][1] + _value[z][1][2] + _value[z][1][2] + _value[z][1][3])) / _pixheight;
		dz_dx := ((_value[z][1][3] + _value[z][2][3] + _value[z][2][3] + _value[z][3][3]) -
			(_value[z][1][1] + _value[z][2][1] + _value[z][2][1] + _value[z][3][1])) / _pixwidth;

		slope := sqrt(dz_dx * dz_dx + dz_dy * dz_dy) / (8 * _scale);

		-- output depends on user preference
		CASE substring(upper(trim(leading from _units)) for 3)
			-- percentages
			WHEN 'PER' THEN
				slope := 100.0 * slope;
			-- radians
			WHEN 'rad' THEN
				slope := atan(slope);
			-- degrees (default)
			ELSE
				slope := degrees(atan(slope));
		END CASE;

		RETURN slope;
	END;
	

Function: _st_summarystats(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: record

Language: C

RASTER_summaryStats

Function: _st_summarystats(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: record

Language: C

RASTER_summaryStatsCoverage

Function: _st_tile(rast public.raster, width integer, height integer, nband integer[], padwithnodata boolean, nodataval double precision)

Returns: SET OF raster

Language: C

RASTER_tile

Function: _st_touches(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

touches

Function: _st_touches(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: C

RASTER_touches

Function: _st_tpi4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		x integer;
		y integer;
		z integer;

		Z1 double precision;
		Z2 double precision;
		Z3 double precision;
		Z4 double precision;
		Z5 double precision;
		Z6 double precision;
		Z7 double precision;
		Z8 double precision;
		Z9 double precision;

		tpi double precision;
		mean double precision;
		_value double precision[][][];
		ndims int;
	BEGIN
		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		z := array_lower(_value, 1);

		IF (
			array_lower(_value, 2) != 1 OR array_upper(_value, 2) != 3 OR
			array_lower(_value, 3) != 1 OR array_upper(_value, 3) != 3
		) THEN
			RAISE EXCEPTION 'First parameter of function must be a 1x3x3 array with each of the lower bounds starting from 1';
		END IF;

		-- check that center pixel isn't NODATA
		IF _value[z][2][2] IS NULL THEN
			RETURN NULL;
		-- substitute center pixel for any neighbor pixels that are NODATA
		ELSE
			FOR y IN 1..3 LOOP
				FOR x IN 1..3 LOOP
					IF _value[z][y][x] IS NULL THEN
						_value[z][y][x] = _value[z][2][2];
					END IF;
				END LOOP;
			END LOOP;
		END IF;

		-------------------------------------------------
		--|   Z1= Z(-1,1) |  Z2= Z(0,1)	| Z3= Z(1,1)  |--
		-------------------------------------------------
		--|   Z4= Z(-1,0) |  Z5= Z(0,0) | Z6= Z(1,0)  |--
		-------------------------------------------------
		--|   Z7= Z(-1,-1)|  Z8= Z(0,-1)|  Z9= Z(1,-1)|--
		-------------------------------------------------

		Z1 := _value[z][1][1];
		Z2 := _value[z][2][1];
		Z3 := _value[z][3][1];
		Z4 := _value[z][1][2];
		Z5 := _value[z][2][2];
		Z6 := _value[z][3][2];
		Z7 := _value[z][1][3];
		Z8 := _value[z][2][3];
		Z9 := _value[z][3][3];

		mean := (Z1 + Z2 + Z3 + Z4 + Z6 + Z7 + Z8 + Z9)/8;
		tpi := Z5-mean;
		
		return tpi;
	END;
	

Function: _st_tri4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		x integer;
		y integer;
		z integer;

		Z1 double precision;
		Z2 double precision;
		Z3 double precision;
		Z4 double precision;
		Z5 double precision;
		Z6 double precision;
		Z7 double precision;
		Z8 double precision;
		Z9 double precision;

		tri double precision;
		_value double precision[][][];
		ndims int;
	BEGIN
		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		z := array_lower(_value, 1);

		IF (
			array_lower(_value, 2) != 1 OR array_upper(_value, 2) != 3 OR
			array_lower(_value, 3) != 1 OR array_upper(_value, 3) != 3
		) THEN
			RAISE EXCEPTION 'First parameter of function must be a 1x3x3 array with each of the lower bounds starting from 1';
		END IF;

		-- check that center pixel isn't NODATA
		IF _value[z][2][2] IS NULL THEN
			RETURN NULL;
		-- substitute center pixel for any neighbor pixels that are NODATA
		ELSE
			FOR y IN 1..3 LOOP
				FOR x IN 1..3 LOOP
					IF _value[z][y][x] IS NULL THEN
						_value[z][y][x] = _value[z][2][2];
					END IF;
				END LOOP;
			END LOOP;
		END IF;

		-------------------------------------------------
		--|   Z1= Z(-1,1) |  Z2= Z(0,1)	| Z3= Z(1,1)  |--
		-------------------------------------------------
		--|   Z4= Z(-1,0) |  Z5= Z(0,0) | Z6= Z(1,0)  |--
		-------------------------------------------------
		--|   Z7= Z(-1,-1)|  Z8= Z(0,-1)|  Z9= Z(1,-1)|--
		-------------------------------------------------

		-- _scale width and height units / z units to make z units equal to height width units
		Z1 := _value[z][1][1];
		Z2 := _value[z][2][1];
		Z3 := _value[z][3][1];
		Z4 := _value[z][1][2];
		Z5 := _value[z][2][2];
		Z6 := _value[z][3][2];
		Z7 := _value[z][1][3];
		Z8 := _value[z][2][3];
		Z9 := _value[z][3][3];

		tri := ( abs(Z1 - Z5 ) + abs( Z2 - Z5 ) + abs( Z3 - Z5 ) + abs( Z4 - Z5 ) + abs( Z6 - Z5 ) + abs( Z7 - Z5 ) + abs( Z8 - Z5 ) + abs ( Z9 - Z5 )) / 8;
		
		return tri;  
	END;
	

Function: _st_union_finalfn(internal)

Returns: raster

Language: C

RASTER_union_finalfn

Function: _st_union_transfn(internal, public.raster)

Returns: internal

Language: C

RASTER_union_transfn

Function: _st_union_transfn(internal, public.raster, integer)

Returns: internal

Language: C

RASTER_union_transfn

Function: _st_union_transfn(internal, public.raster, integer, text)

Returns: internal

Language: C

RASTER_union_transfn

Function: _st_union_transfn(internal, public.raster, public.unionarg[])

Returns: internal

Language: C

RASTER_union_transfn

Function: _st_union_transfn(internal, public.raster, text)

Returns: internal

Language: C

RASTER_union_transfn

Function: _st_valuecount(rast public.raster, nband integer, exclude_nodata_value boolean, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: C

RASTER_valueCount

Function: _st_valuecount(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: C

RASTER_valueCountCoverage

Function: _st_within(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

SELECT _ST_Contains($2,$1)

Function: _st_within(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

 SELECT _st_contains($3, $4, $1, $2) 

Function: _st_worldtorastercoord(rast public.raster, longitude double precision, latitude double precision)

Returns: record

Language: C

RASTER_worldToRasterCoord

Function: _updaterastersrid(schema_name name, table_name name, column_name name, new_srid integer)

Returns: boolean

Language: PLPGSQL

	DECLARE
		fqtn text;
		schema name;
		sql text;
		srid integer;
		ct boolean;
	BEGIN
		-- validate schema
		schema := NULL;
		IF length($1) > 0 THEN
			sql := 'SELECT nspname FROM pg_namespace '
				|| 'WHERE nspname = ' || quote_literal($1)
				|| 'LIMIT 1';
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The value provided for schema is invalid';
				RETURN FALSE;
			END IF;
		END IF;

		IF schema IS NULL THEN
			sql := 'SELECT n.nspname AS schemaname '
				|| 'FROM pg_catalog.pg_class c '
				|| 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace '
				|| 'WHERE c.relkind = ' || quote_literal('r')
				|| ' AND n.nspname NOT IN (' || quote_literal('pg_catalog')
				|| ', ' || quote_literal('pg_toast')
				|| ') AND pg_catalog.pg_table_is_visible(c.oid)'
				|| ' AND c.relname = ' || quote_literal($2);
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The table % does not occur in the search_path', quote_literal($2);
				RETURN FALSE;
			END IF;
		END IF;

		-- clamp SRID
		IF new_srid < 0 THEN
			srid := ST_SRID('POINT EMPTY'::geometry);
			RAISE NOTICE 'SRID % converted to the officially unknown SRID %', new_srid, srid;
		ELSE
			srid := new_srid;
		END IF;

		-- drop coverage tile constraint
		-- done separately just in case constraint doesn't exist
		ct := _raster_constraint_info_coverage_tile(schema, $2, $3);
		IF ct IS TRUE THEN
			PERFORM _drop_raster_constraint_coverage_tile(schema, $2, $3);
		END IF;

		-- drop SRID, extent, alignment constraints
		PERFORM DropRasterConstraints(schema, $2, $3, 'extent', 'alignment', 'srid');

		fqtn := '';
		IF length($1) > 0 THEN
			fqtn := quote_ident($1) || '.';
		END IF;
		fqtn := fqtn || quote_ident($2);

		-- update SRID
		sql := 'UPDATE ' || fqtn ||
			' SET ' || quote_ident($3) ||
			' = ST_SetSRID(' || quote_ident($3) ||
			'::raster, ' || srid || ')';
		RAISE NOTICE 'sql = %', sql;
		EXECUTE sql;

		-- add SRID constraint
		PERFORM AddRasterConstraints(schema, $2, $3, 'srid', 'extent', 'alignment');

		-- add coverage tile constraint if needed
		IF ct IS TRUE THEN
			PERFORM _add_raster_constraint_coverage_tile(schema, $2, $3);
		END IF;

		RETURN TRUE;
	END;
	

Function: addauth(text)

Returns: boolean

Language: PLPGSQL

args: auth_token - Add an authorization token to be used in current transaction.

 
DECLARE
	lockid alias for $1;
	okay boolean;
	myrec record;
BEGIN
	-- check to see if table exists
	--  if not, CREATE TEMP TABLE mylock (transid xid, lockcode text)
	okay := 'f';
	FOR myrec IN SELECT * FROM pg_class WHERE relname = 'temp_lock_have_table' LOOP
		okay := 't';
	END LOOP; 
	IF (okay <> 't') THEN 
		CREATE TEMP TABLE temp_lock_have_table (transid xid, lockcode text);
			-- this will only work from pgsql7.4 up
			-- ON COMMIT DELETE ROWS;
	END IF;

	--  INSERT INTO mylock VALUES ( $1)
--	EXECUTE 'INSERT INTO temp_lock_have_table VALUES ( '||
--		quote_literal(getTransactionID()) || ',' ||
--		quote_literal(lockid) ||')';

	INSERT INTO temp_lock_have_table VALUES (getTransactionID(), lockid);

	RETURN true::boolean;
END;

Function: addgeometrycolumn(catalog_name character varying, schema_name character varying, table_name character varying, column_name character varying, new_srid_in integer, new_type character varying, new_dim integer, use_typmod boolean)

Returns: text

Language: PLPGSQL

args: catalog_name, schema_name, table_name, column_name, srid, type, dimension, use_typmod=true - Adds a geometry column to an existing table of attributes. By default uses type modifier to define rather than constraints. Pass in false for use_typmod to get old check constraint based behavior

DECLARE
	rec RECORD;
	sr varchar;
	real_schema name;
	sql text;
	new_srid integer;

BEGIN

	-- Verify geometry type
	IF (postgis_type_name(new_type,new_dim) IS NULL )
	THEN
		RAISE EXCEPTION 'Invalid type name "%(%)" - valid ones are:
	POINT, MULTIPOINT,
	LINESTRING, MULTILINESTRING,
	POLYGON, MULTIPOLYGON,
	CIRCULARSTRING, COMPOUNDCURVE, MULTICURVE,
	CURVEPOLYGON, MULTISURFACE,
	GEOMETRY, GEOMETRYCOLLECTION,
	POINTM, MULTIPOINTM,
	LINESTRINGM, MULTILINESTRINGM,
	POLYGONM, MULTIPOLYGONM,
	CIRCULARSTRINGM, COMPOUNDCURVEM, MULTICURVEM
	CURVEPOLYGONM, MULTISURFACEM, TRIANGLE, TRIANGLEM,
	POLYHEDRALSURFACE, POLYHEDRALSURFACEM, TIN, TINM
	or GEOMETRYCOLLECTIONM', new_type, new_dim;
		RETURN 'fail';
	END IF;


	-- Verify dimension
	IF ( (new_dim >4) OR (new_dim <2) ) THEN
		RAISE EXCEPTION 'invalid dimension';
		RETURN 'fail';
	END IF;

	IF ( (new_type LIKE '%M') AND (new_dim!=3) ) THEN
		RAISE EXCEPTION 'TypeM needs 3 dimensions';
		RETURN 'fail';
	END IF;


	-- Verify SRID
	IF ( new_srid_in > 0 ) THEN
		IF new_srid_in > 998999 THEN
			RAISE EXCEPTION 'AddGeometryColumn() - SRID must be <= %', 998999;
		END IF;
		new_srid := new_srid_in;
		SELECT SRID INTO sr FROM spatial_ref_sys WHERE SRID = new_srid;
		IF NOT FOUND THEN
			RAISE EXCEPTION 'AddGeometryColumn() - invalid SRID';
			RETURN 'fail';
		END IF;
	ELSE
		new_srid := ST_SRID('POINT EMPTY'::geometry);
		IF ( new_srid_in != new_srid ) THEN
			RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid;
		END IF;
	END IF;


	-- Verify schema
	IF ( schema_name IS NOT NULL AND schema_name != '' ) THEN
		sql := 'SELECT nspname FROM pg_namespace ' ||
			'WHERE text(nspname) = ' || quote_literal(schema_name) ||
			'LIMIT 1';
		RAISE DEBUG '%', sql;
		EXECUTE sql INTO real_schema;

		IF ( real_schema IS NULL ) THEN
			RAISE EXCEPTION 'Schema % is not a valid schemaname', quote_literal(schema_name);
			RETURN 'fail';
		END IF;
	END IF;

	IF ( real_schema IS NULL ) THEN
		RAISE DEBUG 'Detecting schema';
		sql := 'SELECT n.nspname AS schemaname ' ||
			'FROM pg_catalog.pg_class c ' ||
			  'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace ' ||
			'WHERE c.relkind = ' || quote_literal('r') ||
			' AND n.nspname NOT IN (' || quote_literal('pg_catalog') || ', ' || quote_literal('pg_toast') || ')' ||
			' AND pg_catalog.pg_table_is_visible(c.oid)' ||
			' AND c.relname = ' || quote_literal(table_name);
		RAISE DEBUG '%', sql;
		EXECUTE sql INTO real_schema;

		IF ( real_schema IS NULL ) THEN
			RAISE EXCEPTION 'Table % does not occur in the search_path', quote_literal(table_name);
			RETURN 'fail';
		END IF;
	END IF;


	-- Add geometry column to table
	IF use_typmod THEN
	     sql := 'ALTER TABLE ' ||
            quote_ident(real_schema) || '.' || quote_ident(table_name)
            || ' ADD COLUMN ' || quote_ident(column_name) ||
            ' geometry(' || postgis_type_name(new_type, new_dim) || ', ' || new_srid::text || ')';
        RAISE DEBUG '%', sql;
	ELSE
        sql := 'ALTER TABLE ' ||
            quote_ident(real_schema) || '.' || quote_ident(table_name)
            || ' ADD COLUMN ' || quote_ident(column_name) ||
            ' geometry ';
        RAISE DEBUG '%', sql;
    END IF;
	EXECUTE sql;

	IF NOT use_typmod THEN
        -- Add table CHECKs
        sql := 'ALTER TABLE ' ||
            quote_ident(real_schema) || '.' || quote_ident(table_name)
            || ' ADD CONSTRAINT '
            || quote_ident('enforce_srid_' || column_name)
            || ' CHECK (st_srid(' || quote_ident(column_name) ||
            ') = ' || new_srid::text || ')' ;
        RAISE DEBUG '%', sql;
        EXECUTE sql;
    
        sql := 'ALTER TABLE ' ||
            quote_ident(real_schema) || '.' || quote_ident(table_name)
            || ' ADD CONSTRAINT '
            || quote_ident('enforce_dims_' || column_name)
            || ' CHECK (st_ndims(' || quote_ident(column_name) ||
            ') = ' || new_dim::text || ')' ;
        RAISE DEBUG '%', sql;
        EXECUTE sql;
    
        IF ( NOT (new_type = 'GEOMETRY')) THEN
            sql := 'ALTER TABLE ' ||
                quote_ident(real_schema) || '.' || quote_ident(table_name) || ' ADD CONSTRAINT ' ||
                quote_ident('enforce_geotype_' || column_name) ||
                ' CHECK (GeometryType(' ||
                quote_ident(column_name) || ')=' ||
                quote_literal(new_type) || ' OR (' ||
                quote_ident(column_name) || ') is null)';
            RAISE DEBUG '%', sql;
            EXECUTE sql;
        END IF;
    END IF;

	RETURN
		real_schema || '.' ||
		table_name || '.' || column_name ||
		' SRID:' || new_srid::text ||
		' TYPE:' || new_type ||
		' DIMS:' || new_dim::text || ' ';
END;

Function: addgeometrycolumn(schema_name character varying, table_name character varying, column_name character varying, new_srid integer, new_type character varying, new_dim integer, use_typmod boolean)

Returns: text

Language: PLPGSQL

args: schema_name, table_name, column_name, srid, type, dimension, use_typmod=true - Adds a geometry column to an existing table of attributes. By default uses type modifier to define rather than constraints. Pass in false for use_typmod to get old check constraint based behavior

DECLARE
	ret  text;
BEGIN
	SELECT AddGeometryColumn('',$1,$2,$3,$4,$5,$6,$7) into ret;
	RETURN ret;
END;

Function: addgeometrycolumn(table_name character varying, column_name character varying, new_srid integer, new_type character varying, new_dim integer, use_typmod boolean)

Returns: text

Language: PLPGSQL

args: table_name, column_name, srid, type, dimension, use_typmod=true - Adds a geometry column to an existing table of attributes. By default uses type modifier to define rather than constraints. Pass in false for use_typmod to get old check constraint based behavior

DECLARE
	ret  text;
BEGIN
	SELECT AddGeometryColumn('','',$1,$2,$3,$4,$5, $6) into ret;
	RETURN ret;
END;

Function: addoverviewconstraints(ovschema name, ovtable name, ovcolumn name, refschema name, reftable name, refcolumn name, ovfactor integer)

Returns: boolean

Language: PLPGSQL

args: ovschema, ovtable, ovcolumn, refschema, reftable, refcolumn, ovfactor - Tag a raster column as being an overview of another.

	DECLARE
		x int;
		s name;
		t name;
		oschema name;
		rschema name;
		sql text;
		rtn boolean;
	BEGIN
		FOR x IN 1..2 LOOP
			s := '';

			IF x = 1 THEN
				s := $1;
				t := $2;
			ELSE
				s := $4;
				t := $5;
			END IF;

			-- validate user-provided schema
			IF length(s) > 0 THEN
				sql := 'SELECT nspname FROM pg_namespace '
					|| 'WHERE nspname = ' || quote_literal(s)
					|| 'LIMIT 1';
				EXECUTE sql INTO s;

				IF s IS NULL THEN
					RAISE EXCEPTION 'The value % is not a valid schema', quote_literal(s);
					RETURN FALSE;
				END IF;
			END IF;

			-- no schema, determine what it could be using the table
			IF length(s) < 1 THEN
				sql := 'SELECT n.nspname AS schemaname '
					|| 'FROM pg_catalog.pg_class c '
					|| 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace '
					|| 'WHERE c.relkind = ' || quote_literal('r')
					|| ' AND n.nspname NOT IN (' || quote_literal('pg_catalog')
					|| ', ' || quote_literal('pg_toast')
					|| ') AND pg_catalog.pg_table_is_visible(c.oid)'
					|| ' AND c.relname = ' || quote_literal(t);
				EXECUTE sql INTO s;

				IF s IS NULL THEN
					RAISE EXCEPTION 'The table % does not occur in the search_path', quote_literal(t);
					RETURN FALSE;
				END IF;
			END IF;

			IF x = 1 THEN
				oschema := s;
			ELSE
				rschema := s;
			END IF;
		END LOOP;

		-- reference raster
		rtn := _add_overview_constraint(oschema, $2, $3, rschema, $5, $6, $7);
		IF rtn IS FALSE THEN
			RAISE EXCEPTION 'Unable to add the overview constraint.  Is the schema name, table name or column name incorrect?';
			RETURN FALSE;
		END IF;

		RETURN TRUE;
	END;
	

Function: addoverviewconstraints(ovtable name, ovcolumn name, reftable name, refcolumn name, ovfactor integer)

Returns: boolean

Language: SQL

args: ovtable, ovcolumn, reftable, refcolumn, ovfactor - Tag a raster column as being an overview of another.

 SELECT AddOverviewConstraints('', $1, $2, '', $3, $4, $5) 

Function: addrasterconstraints(rastschema name, rasttable name, rastcolumn name, constraints text[])

Returns: boolean

Language: PLPGSQL

args: rastschema, rasttable, rastcolumn, VARIADIC constraints - Adds raster constraints to a loaded raster table for a specific column that constrains spatial ref, scaling, blocksize, alignment, bands, band type and a flag to denote if raster column is regularly blocked. The table must be loaded with data for the constraints to be inferred. Returns true of the constraint setting was accomplished and if issues a notice.

	DECLARE
		max int;
		cnt int;
		sql text;
		schema name;
		x int;
		kw text;
		rtn boolean;
	BEGIN
		cnt := 0;
		max := array_length(constraints, 1);
		IF max < 1 THEN
			RAISE NOTICE 'No constraints indicated to be added.  Doing nothing';
			RETURN TRUE;
		END IF;

		-- validate schema
		schema := NULL;
		IF length($1) > 0 THEN
			sql := 'SELECT nspname FROM pg_namespace '
				|| 'WHERE nspname = ' || quote_literal($1)
				|| 'LIMIT 1';
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The value provided for schema is invalid';
				RETURN FALSE;
			END IF;
		END IF;

		IF schema IS NULL THEN
			sql := 'SELECT n.nspname AS schemaname '
				|| 'FROM pg_catalog.pg_class c '
				|| 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace '
				|| 'WHERE c.relkind = ' || quote_literal('r')
				|| ' AND n.nspname NOT IN (' || quote_literal('pg_catalog')
				|| ', ' || quote_literal('pg_toast')
				|| ') AND pg_catalog.pg_table_is_visible(c.oid)'
				|| ' AND c.relname = ' || quote_literal($2);
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The table % does not occur in the search_path', quote_literal($2);
				RETURN FALSE;
			END IF;
		END IF;

		<<kwloop>>
		FOR x in 1..max LOOP
			kw := trim(both from lower(constraints[x]));

			BEGIN
				CASE
					WHEN kw = 'srid' THEN
						RAISE NOTICE 'Adding SRID constraint';
						rtn := _add_raster_constraint_srid(schema, $2, $3);
					WHEN kw IN ('scale_x', 'scalex') THEN
						RAISE NOTICE 'Adding scale-X constraint';
						rtn := _add_raster_constraint_scale(schema, $2, $3, 'x');
					WHEN kw IN ('scale_y', 'scaley') THEN
						RAISE NOTICE 'Adding scale-Y constraint';
						rtn := _add_raster_constraint_scale(schema, $2, $3, 'y');
					WHEN kw = 'scale' THEN
						RAISE NOTICE 'Adding scale-X constraint';
						rtn := _add_raster_constraint_scale(schema, $2, $3, 'x');
						RAISE NOTICE 'Adding scale-Y constraint';
						rtn := _add_raster_constraint_scale(schema, $2, $3, 'y');
					WHEN kw IN ('blocksize_x', 'blocksizex', 'width') THEN
						RAISE NOTICE 'Adding blocksize-X constraint';
						rtn := _add_raster_constraint_blocksize(schema, $2, $3, 'width');
					WHEN kw IN ('blocksize_y', 'blocksizey', 'height') THEN
						RAISE NOTICE 'Adding blocksize-Y constraint';
						rtn := _add_raster_constraint_blocksize(schema, $2, $3, 'height');
					WHEN kw = 'blocksize' THEN
						RAISE NOTICE 'Adding blocksize-X constraint';
						rtn := _add_raster_constraint_blocksize(schema, $2, $3, 'width');
						RAISE NOTICE 'Adding blocksize-Y constraint';
						rtn := _add_raster_constraint_blocksize(schema, $2, $3, 'height');
					WHEN kw IN ('same_alignment', 'samealignment', 'alignment') THEN
						RAISE NOTICE 'Adding alignment constraint';
						rtn := _add_raster_constraint_alignment(schema, $2, $3);
					WHEN kw IN ('regular_blocking', 'regularblocking') THEN
						RAISE NOTICE 'Adding coverage tile constraint required for regular blocking';
						rtn := _add_raster_constraint_coverage_tile(schema, $2, $3);
						IF rtn IS NOT FALSE THEN
							RAISE NOTICE 'Adding spatially unique constraint required for regular blocking';
							rtn := _add_raster_constraint_spatially_unique(schema, $2, $3);
						END IF;
					WHEN kw IN ('num_bands', 'numbands') THEN
						RAISE NOTICE 'Adding number of bands constraint';
						rtn := _add_raster_constraint_num_bands(schema, $2, $3);
					WHEN kw IN ('pixel_types', 'pixeltypes') THEN
						RAISE NOTICE 'Adding pixel type constraint';
						rtn := _add_raster_constraint_pixel_types(schema, $2, $3);
					WHEN kw IN ('nodata_values', 'nodatavalues', 'nodata') THEN
						RAISE NOTICE 'Adding nodata value constraint';
						rtn := _add_raster_constraint_nodata_values(schema, $2, $3);
					WHEN kw IN ('out_db', 'outdb') THEN
						RAISE NOTICE 'Adding out-of-database constraint';
						rtn := _add_raster_constraint_out_db(schema, $2, $3);
					WHEN kw = 'extent' THEN
						RAISE NOTICE 'Adding maximum extent constraint';
						rtn := _add_raster_constraint_extent(schema, $2, $3);
					ELSE
						RAISE NOTICE 'Unknown constraint: %.  Skipping', quote_literal(constraints[x]);
						CONTINUE kwloop;
				END CASE;
			END;

			IF rtn IS FALSE THEN
				cnt := cnt + 1;
				RAISE WARNING 'Unable to add constraint: %.  Skipping', quote_literal(constraints[x]);
			END IF;

		END LOOP kwloop;

		IF cnt = max THEN
			RAISE EXCEPTION 'None of the constraints specified could be added.  Is the schema name, table name or column name incorrect?';
			RETURN FALSE;
		END IF;

		RETURN TRUE;
	END;
	

Function: addrasterconstraints(rastschema name, rasttable name, rastcolumn name, srid boolean, scale_x boolean, scale_y boolean, blocksize_x boolean, blocksize_y boolean, same_alignment boolean, regular_blocking boolean, num_bands boolean, pixel_types boolean, nodata_values boolean, out_db boolean, extent boolean)

Returns: boolean

Language: PLPGSQL

args: rastschema, rasttable, rastcolumn, srid=true, scale_x=true, scale_y=true, blocksize_x=true, blocksize_y=true, same_alignment=true, regular_blocking=false, num_bands=true, pixel_types=true, nodata_values=true, out_db=true, extent=true - Adds raster constraints to a loaded raster table for a specific column that constrains spatial ref, scaling, blocksize, alignment, bands, band type and a flag to denote if raster column is regularly blocked. The table must be loaded with data for the constraints to be inferred. Returns true of the constraint setting was accomplished and if issues a notice.

	DECLARE
		constraints text[];
	BEGIN
		IF srid IS TRUE THEN
			constraints := constraints || 'srid'::text;
		END IF;

		IF scale_x IS TRUE THEN
			constraints := constraints || 'scale_x'::text;
		END IF;

		IF scale_y IS TRUE THEN
			constraints := constraints || 'scale_y'::text;
		END IF;

		IF blocksize_x IS TRUE THEN
			constraints := constraints || 'blocksize_x'::text;
		END IF;

		IF blocksize_y IS TRUE THEN
			constraints := constraints || 'blocksize_y'::text;
		END IF;

		IF same_alignment IS TRUE THEN
			constraints := constraints || 'same_alignment'::text;
		END IF;

		IF regular_blocking IS TRUE THEN
			constraints := constraints || 'regular_blocking'::text;
		END IF;

		IF num_bands IS TRUE THEN
			constraints := constraints || 'num_bands'::text;
		END IF;

		IF pixel_types IS TRUE THEN
			constraints := constraints || 'pixel_types'::text;
		END IF;

		IF nodata_values IS TRUE THEN
			constraints := constraints || 'nodata_values'::text;
		END IF;

		IF out_db IS TRUE THEN
			constraints := constraints || 'out_db'::text;
		END IF;

		IF extent IS TRUE THEN
			constraints := constraints || 'extent'::text;
		END IF;

		RETURN AddRasterConstraints($1, $2, $3, VARIADIC constraints);
	END;
	

Function: addrasterconstraints(rasttable name, rastcolumn name, constraints text[])

Returns: boolean

Language: SQL

args: rasttable, rastcolumn, VARIADIC constraints - Adds raster constraints to a loaded raster table for a specific column that constrains spatial ref, scaling, blocksize, alignment, bands, band type and a flag to denote if raster column is regularly blocked. The table must be loaded with data for the constraints to be inferred. Returns true of the constraint setting was accomplished and if issues a notice.

 SELECT AddRasterConstraints('', $1, $2, VARIADIC $3) 

Function: addrasterconstraints(rasttable name, rastcolumn name, srid boolean, scale_x boolean, scale_y boolean, blocksize_x boolean, blocksize_y boolean, same_alignment boolean, regular_blocking boolean, num_bands boolean, pixel_types boolean, nodata_values boolean, out_db boolean, extent boolean)

Returns: boolean

Language: SQL

args: rasttable, rastcolumn, srid, scale_x, scale_y, blocksize_x, blocksize_y, same_alignment, regular_blocking, num_bands=true, pixel_types=true, nodata_values=true, out_db=true, extent=true - Adds raster constraints to a loaded raster table for a specific column that constrains spatial ref, scaling, blocksize, alignment, bands, band type and a flag to denote if raster column is regularly blocked. The table must be loaded with data for the constraints to be inferred. Returns true of the constraint setting was accomplished and if issues a notice.

 SELECT AddRasterConstraints('', $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) 

Function: box(public.box3d)

Returns: box

Language: C

BOX3D_to_BOX

Function: box(public.geometry)

Returns: box

Language: C

LWGEOM_to_BOX

Function: box2d(public.box3d)

Returns: box2d

Language: C

BOX3D_to_BOX2D

Function: box2d(public.geometry)

Returns: box2d

Language: C

args: geomA - Returns a BOX2D representing the maximum extents of the geometry.

LWGEOM_to_BOX2D

Function: box2d_in(cstring)

Returns: box2d

Language: C

BOX2D_in

Function: box2d_out(public.box2d)

Returns: cstring

Language: C

BOX2D_out

Function: box2df_in(cstring)

Returns: box2df

Language: C

box2df_in

Function: box2df_out(public.box2df)

Returns: cstring

Language: C

box2df_out

Function: box3d(public.box2d)

Returns: box3d

Language: C

BOX2D_to_BOX3D

Function: box3d(public.geometry)

Returns: box3d

Language: C

args: geomA - Returns a BOX3D representing the maximum extents of the geometry.

LWGEOM_to_BOX3D

Function: box3d(public.raster)

Returns: box3d

Language: SQL

select box3d(st_convexhull($1))

Function: box3d_in(cstring)

Returns: box3d

Language: C

BOX3D_in

Function: box3d_out(public.box3d)

Returns: cstring

Language: C

BOX3D_out

Function: box3dtobox(public.box3d)

Returns: box

Language: SQL

SELECT box($1)

Function: bytea(public.geography)

Returns: bytea

Language: C

LWGEOM_to_bytea

Function: bytea(public.geometry)

Returns: bytea

Language: C

LWGEOM_to_bytea

Function: bytea(public.raster)

Returns: bytea

Language: C

RASTER_to_bytea

Function: checkauth(text, text)

Returns: integer

Language: SQL

args: a_table_name, a_key_column_name - Creates trigger on a table to prevent/allow updates and deletes of rows based on authorization token.

 SELECT CheckAuth('', $1, $2) 

Function: checkauth(text, text, text)

Returns: integer

Language: PLPGSQL

args: a_schema_name, a_table_name, a_key_column_name - Creates trigger on a table to prevent/allow updates and deletes of rows based on authorization token.

 
DECLARE
	schema text;
BEGIN
	IF NOT LongTransactionsEnabled() THEN
		RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.';
	END IF;

	if ( $1 != '' ) THEN
		schema = $1;
	ELSE
		SELECT current_schema() into schema;
	END IF;

	-- TODO: check for an already existing trigger ?

	EXECUTE 'CREATE TRIGGER check_auth BEFORE UPDATE OR DELETE ON ' 
		|| quote_ident(schema) || '.' || quote_ident($2)
		||' FOR EACH ROW EXECUTE PROCEDURE CheckAuthTrigger('
		|| quote_literal($3) || ')';

	RETURN 0;
END;

Function: checkauthtrigger()

Returns: trigger

Language: C

check_authorization

Function: cong_replace()

Returns: void

Language: PLPGSQL

DECLARE
 highs RECORD;
begin
FOR highs in select conghighlight_id, array_to_string, replace FROM scratch.conghighlight_replace LOOP
EXECUTE 'UPDATE scratch.conghighlight ch set highlight = replace(highlight, E' || quote_literal(highs.array_to_string) || ' , E' ||  quote_literal(highs.replace) || ') WHERE ch.conghighlight_id = ' || highs.conghighlight_id || ';';
END LOOP; 
END;

Function: difference(text, text)

Returns: integer

Language: C

difference

Function: disablelongtransactions()

Returns: text

Language: PLPGSQL

Disable long transaction support. This function removes the long transaction support metadata tables, and drops all triggers attached to lock-checked tables.

 
DECLARE
	rec RECORD;

BEGIN

	--
	-- Drop all triggers applied by CheckAuth()
	--
	FOR rec IN
		SELECT c.relname, t.tgname, t.tgargs FROM pg_trigger t, pg_class c, pg_proc p
		WHERE p.proname = 'checkauthtrigger' and t.tgfoid = p.oid and t.tgrelid = c.oid
	LOOP
		EXECUTE 'DROP TRIGGER ' || quote_ident(rec.tgname) ||
			' ON ' || quote_ident(rec.relname);
	END LOOP;

	--
	-- Drop the authorization_table table
	--
	FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorization_table' LOOP
		DROP TABLE authorization_table;
	END LOOP;

	--
	-- Drop the authorized_tables view
	--
	FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorized_tables' LOOP
		DROP VIEW authorized_tables;
	END LOOP;

	RETURN 'Long transactions support disabled';
END;

Function: dmetaphone(text)

Returns: text

Language: C

dmetaphone

Function: dmetaphone_alt(text)

Returns: text

Language: C

dmetaphone_alt

Function: dropgeometrycolumn(catalog_name character varying, schema_name character varying, table_name character varying, column_name character varying)

Returns: text

Language: PLPGSQL

args: catalog_name, schema_name, table_name, column_name - Removes a geometry column from a spatial table.

DECLARE
	myrec RECORD;
	okay boolean;
	real_schema name;

BEGIN


	-- Find, check or fix schema_name
	IF ( schema_name != '' ) THEN
		okay = false;

		FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
			okay := true;
		END LOOP;

		IF ( okay <>  true ) THEN
			RAISE NOTICE 'Invalid schema name - using current_schema()';
			SELECT current_schema() into real_schema;
		ELSE
			real_schema = schema_name;
		END IF;
	ELSE
		SELECT current_schema() into real_schema;
	END IF;

	-- Find out if the column is in the geometry_columns table
	okay = false;
	FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
		okay := true;
	END LOOP;
	IF (okay <> true) THEN
		RAISE EXCEPTION 'column not found in geometry_columns table';
		RETURN false;
	END IF;

	-- Remove table column
	EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' ||
		quote_ident(table_name) || ' DROP COLUMN ' ||
		quote_ident(column_name);

	RETURN real_schema || '.' || table_name || '.' || column_name ||' effectively removed.';

END;

Function: dropgeometrycolumn(schema_name character varying, table_name character varying, column_name character varying)

Returns: text

Language: PLPGSQL

args: schema_name, table_name, column_name - Removes a geometry column from a spatial table.

DECLARE
	ret text;
BEGIN
	SELECT DropGeometryColumn('',$1,$2,$3) into ret;
	RETURN ret;
END;

Function: dropgeometrycolumn(table_name character varying, column_name character varying)

Returns: text

Language: PLPGSQL

args: table_name, column_name - Removes a geometry column from a spatial table.

DECLARE
	ret text;
BEGIN
	SELECT DropGeometryColumn('','',$1,$2) into ret;
	RETURN ret;
END;

Function: dropgeometrytable(catalog_name character varying, schema_name character varying, table_name character varying)

Returns: text

Language: PLPGSQL

args: catalog_name, schema_name, table_name - Drops a table and all its references in geometry_columns.

DECLARE
	real_schema name;

BEGIN

	IF ( schema_name = '' ) THEN
		SELECT current_schema() into real_schema;
	ELSE
		real_schema = schema_name;
	END IF;

	-- TODO: Should we warn if table doesn't exist probably instead just saying dropped
	-- Remove table
	EXECUTE 'DROP TABLE IF EXISTS '
		|| quote_ident(real_schema) || '.' ||
		quote_ident(table_name) || ' RESTRICT';

	RETURN
		real_schema || '.' ||
		table_name ||' dropped.';

END;

Function: dropgeometrytable(schema_name character varying, table_name character varying)

Returns: text

Language: SQL

args: schema_name, table_name - Drops a table and all its references in geometry_columns.

 SELECT DropGeometryTable('',$1,$2) 

Function: dropgeometrytable(table_name character varying)

Returns: text

Language: SQL

args: table_name - Drops a table and all its references in geometry_columns.

 SELECT DropGeometryTable('','',$1) 

Function: dropoverviewconstraints(ovschema name, ovtable name, ovcolumn name)

Returns: boolean

Language: PLPGSQL

args: ovschema, ovtable, ovcolumn - Untag a raster column from being an overview of another.

	DECLARE
		schema name;
		sql text;
		rtn boolean;
	BEGIN
		-- validate schema
		schema := NULL;
		IF length($1) > 0 THEN
			sql := 'SELECT nspname FROM pg_namespace '
				|| 'WHERE nspname = ' || quote_literal($1)
				|| 'LIMIT 1';
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The value provided for schema is invalid';
				RETURN FALSE;
			END IF;
		END IF;

		IF schema IS NULL THEN
			sql := 'SELECT n.nspname AS schemaname '
				|| 'FROM pg_catalog.pg_class c '
				|| 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace '
				|| 'WHERE c.relkind = ' || quote_literal('r')
				|| ' AND n.nspname NOT IN (' || quote_literal('pg_catalog')
				|| ', ' || quote_literal('pg_toast')
				|| ') AND pg_catalog.pg_table_is_visible(c.oid)'
				|| ' AND c.relname = ' || quote_literal($2);
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The table % does not occur in the search_path', quote_literal($2);
				RETURN FALSE;
			END IF;
		END IF;

		rtn := _drop_overview_constraint(schema, $2, $3);
		IF rtn IS FALSE THEN
			RAISE EXCEPTION 'Unable to drop the overview constraint .  Is the schema name, table name or column name incorrect?';
			RETURN FALSE;
		END IF;

		RETURN TRUE;
	END;
	

Function: dropoverviewconstraints(ovtable name, ovcolumn name)

Returns: boolean

Language: SQL

args: ovtable, ovcolumn - Untag a raster column from being an overview of another.

 SELECT DropOverviewConstraints('', $1, $2) 

Function: droprasterconstraints(rastschema name, rasttable name, rastcolumn name, constraints text[])

Returns: boolean

Language: PLPGSQL

args: rastschema, rasttable, rastcolumn, constraints - Drops PostGIS raster constraints that refer to a raster table column. Useful if you need to reload data or update your raster column data.

	DECLARE
		max int;
		x int;
		schema name;
		sql text;
		kw text;
		rtn boolean;
		cnt int;
	BEGIN
		cnt := 0;
		max := array_length(constraints, 1);
		IF max < 1 THEN
			RAISE NOTICE 'No constraints indicated to be dropped.  Doing nothing';
			RETURN TRUE;
		END IF;

		-- validate schema
		schema := NULL;
		IF length($1) > 0 THEN
			sql := 'SELECT nspname FROM pg_namespace '
				|| 'WHERE nspname = ' || quote_literal($1)
				|| 'LIMIT 1';
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The value provided for schema is invalid';
				RETURN FALSE;
			END IF;
		END IF;

		IF schema IS NULL THEN
			sql := 'SELECT n.nspname AS schemaname '
				|| 'FROM pg_catalog.pg_class c '
				|| 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace '
				|| 'WHERE c.relkind = ' || quote_literal('r')
				|| ' AND n.nspname NOT IN (' || quote_literal('pg_catalog')
				|| ', ' || quote_literal('pg_toast')
				|| ') AND pg_catalog.pg_table_is_visible(c.oid)'
				|| ' AND c.relname = ' || quote_literal($2);
			EXECUTE sql INTO schema;

			IF schema IS NULL THEN
				RAISE EXCEPTION 'The table % does not occur in the search_path', quote_literal($2);
				RETURN FALSE;
			END IF;
		END IF;

		<<kwloop>>
		FOR x in 1..max LOOP
			kw := trim(both from lower(constraints[x]));

			BEGIN
				CASE
					WHEN kw = 'srid' THEN
						RAISE NOTICE 'Dropping SRID constraint';
						rtn := _drop_raster_constraint_srid(schema, $2, $3);
					WHEN kw IN ('scale_x', 'scalex') THEN
						RAISE NOTICE 'Dropping scale-X constraint';
						rtn := _drop_raster_constraint_scale(schema, $2, $3, 'x');
					WHEN kw IN ('scale_y', 'scaley') THEN
						RAISE NOTICE 'Dropping scale-Y constraint';
						rtn := _drop_raster_constraint_scale(schema, $2, $3, 'y');
					WHEN kw = 'scale' THEN
						RAISE NOTICE 'Dropping scale-X constraint';
						rtn := _drop_raster_constraint_scale(schema, $2, $3, 'x');
						RAISE NOTICE 'Dropping scale-Y constraint';
						rtn := _drop_raster_constraint_scale(schema, $2, $3, 'y');
					WHEN kw IN ('blocksize_x', 'blocksizex', 'width') THEN
						RAISE NOTICE 'Dropping blocksize-X constraint';
						rtn := _drop_raster_constraint_blocksize(schema, $2, $3, 'width');
					WHEN kw IN ('blocksize_y', 'blocksizey', 'height') THEN
						RAISE NOTICE 'Dropping blocksize-Y constraint';
						rtn := _drop_raster_constraint_blocksize(schema, $2, $3, 'height');
					WHEN kw = 'blocksize' THEN
						RAISE NOTICE 'Dropping blocksize-X constraint';
						rtn := _drop_raster_constraint_blocksize(schema, $2, $3, 'width');
						RAISE NOTICE 'Dropping blocksize-Y constraint';
						rtn := _drop_raster_constraint_blocksize(schema, $2, $3, 'height');
					WHEN kw IN ('same_alignment', 'samealignment', 'alignment') THEN
						RAISE NOTICE 'Dropping alignment constraint';
						rtn := _drop_raster_constraint_alignment(schema, $2, $3);
					WHEN kw IN ('regular_blocking', 'regularblocking') THEN
						rtn := _drop_raster_constraint_regular_blocking(schema, $2, $3);

						RAISE NOTICE 'Dropping coverage tile constraint required for regular blocking';
						rtn := _drop_raster_constraint_coverage_tile(schema, $2, $3);

						IF rtn IS NOT FALSE THEN
							RAISE NOTICE 'Dropping spatially unique constraint required for regular blocking';
							rtn := _drop_raster_constraint_spatially_unique(schema, $2, $3);
						END IF;
					WHEN kw IN ('num_bands', 'numbands') THEN
						RAISE NOTICE 'Dropping number of bands constraint';
						rtn := _drop_raster_constraint_num_bands(schema, $2, $3);
					WHEN kw IN ('pixel_types', 'pixeltypes') THEN
						RAISE NOTICE 'Dropping pixel type constraint';
						rtn := _drop_raster_constraint_pixel_types(schema, $2, $3);
					WHEN kw IN ('nodata_values', 'nodatavalues', 'nodata') THEN
						RAISE NOTICE 'Dropping nodata value constraint';
						rtn := _drop_raster_constraint_nodata_values(schema, $2, $3);
					WHEN kw IN ('out_db', 'outdb') THEN
						RAISE NOTICE 'Dropping out-of-database constraint';
						rtn := _drop_raster_constraint_out_db(schema, $2, $3);
					WHEN kw = 'extent' THEN
						RAISE NOTICE 'Dropping maximum extent constraint';
						rtn := _drop_raster_constraint_extent(schema, $2, $3);
					ELSE
						RAISE NOTICE 'Unknown constraint: %.  Skipping', quote_literal(constraints[x]);
						CONTINUE kwloop;
				END CASE;
			END;

			IF rtn IS FALSE THEN
				cnt := cnt + 1;
				RAISE WARNING 'Unable to drop constraint: %.  Skipping', quote_literal(constraints[x]);
			END IF;

		END LOOP kwloop;

		IF cnt = max THEN
			RAISE EXCEPTION 'None of the constraints specified could be dropped.  Is the schema name, table name or column name incorrect?';
			RETURN FALSE;
		END IF;

		RETURN TRUE;
	END;
	

Function: droprasterconstraints(rastschema name, rasttable name, rastcolumn name, srid boolean, scale_x boolean, scale_y boolean, blocksize_x boolean, blocksize_y boolean, same_alignment boolean, regular_blocking boolean, num_bands boolean, pixel_types boolean, nodata_values boolean, out_db boolean, extent boolean)

Returns: boolean

Language: PLPGSQL

args: rastschema, rasttable, rastcolumn, srid=true, scale_x=true, scale_y=true, blocksize_x=true, blocksize_y=true, same_alignment=true, regular_blocking=false, num_bands=true, pixel_types=true, nodata_values=true, out_db=true, extent=true - Drops PostGIS raster constraints that refer to a raster table column. Useful if you need to reload data or update your raster column data.

	DECLARE
		constraints text[];
	BEGIN
		IF srid IS TRUE THEN
			constraints := constraints || 'srid'::text;
		END IF;

		IF scale_x IS TRUE THEN
			constraints := constraints || 'scale_x'::text;
		END IF;

		IF scale_y IS TRUE THEN
			constraints := constraints || 'scale_y'::text;
		END IF;

		IF blocksize_x IS TRUE THEN
			constraints := constraints || 'blocksize_x'::text;
		END IF;

		IF blocksize_y IS TRUE THEN
			constraints := constraints || 'blocksize_y'::text;
		END IF;

		IF same_alignment IS TRUE THEN
			constraints := constraints || 'same_alignment'::text;
		END IF;

		IF regular_blocking IS TRUE THEN
			constraints := constraints || 'regular_blocking'::text;
		END IF;

		IF num_bands IS TRUE THEN
			constraints := constraints || 'num_bands'::text;
		END IF;

		IF pixel_types IS TRUE THEN
			constraints := constraints || 'pixel_types'::text;
		END IF;

		IF nodata_values IS TRUE THEN
			constraints := constraints || 'nodata_values'::text;
		END IF;

		IF out_db IS TRUE THEN
			constraints := constraints || 'out_db'::text;
		END IF;

		IF extent IS TRUE THEN
			constraints := constraints || 'extent'::text;
		END IF;

		RETURN DropRasterConstraints($1, $2, $3, VARIADIC constraints);
	END;
	

Function: droprasterconstraints(rasttable name, rastcolumn name, constraints text[])

Returns: boolean

Language: SQL

 SELECT DropRasterConstraints('', $1, $2, VARIADIC $3) 

Function: droprasterconstraints(rasttable name, rastcolumn name, srid boolean, scale_x boolean, scale_y boolean, blocksize_x boolean, blocksize_y boolean, same_alignment boolean, regular_blocking boolean, num_bands boolean, pixel_types boolean, nodata_values boolean, out_db boolean, extent boolean)

Returns: boolean

Language: SQL

args: rasttable, rastcolumn, srid, scale_x, scale_y, blocksize_x, blocksize_y, same_alignment, regular_blocking, num_bands=true, pixel_types=true, nodata_values=true, out_db=true, extent=true - Drops PostGIS raster constraints that refer to a raster table column. Useful if you need to reload data or update your raster column data.

 SELECT DropRasterConstraints('', $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) 

Function: enablelongtransactions()

Returns: text

Language: PLPGSQL

Enable long transaction support. This function creates the required metadata tables, needs to be called once before using the other functions in this section. Calling it twice is harmless.

 
DECLARE
	"query" text;
	exists bool;
	rec RECORD;

BEGIN

	exists = 'f';
	FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorization_table'
	LOOP
		exists = 't';
	END LOOP;

	IF NOT exists
	THEN
		"query" = 'CREATE TABLE authorization_table (
			toid oid, -- table oid
			rid text, -- row id
			expires timestamp,
			authid text
		)';
		EXECUTE "query";
	END IF;

	exists = 'f';
	FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorized_tables'
	LOOP
		exists = 't';
	END LOOP;

	IF NOT exists THEN
		"query" = 'CREATE VIEW authorized_tables AS ' ||
			'SELECT ' ||
			'n.nspname as schema, ' ||
			'c.relname as table, trim(' ||
			quote_literal(chr(92) || '000') ||
			' from t.tgargs) as id_column ' ||
			'FROM pg_trigger t, pg_class c, pg_proc p ' ||
			', pg_namespace n ' ||
			'WHERE p.proname = ' || quote_literal('checkauthtrigger') ||
			' AND c.relnamespace = n.oid' ||
			' AND t.tgfoid = p.oid and t.tgrelid = c.oid';
		EXECUTE "query";
	END IF;

	RETURN 'Long transactions support enabled';
END;

Function: equals(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

ST_Equals

Function: find_srid(character varying, character varying, character varying)

Returns: integer

Language: PLPGSQL

args: a_schema_name, a_table_name, a_geomfield_name - The syntax is find_srid(a_db_schema, a_table, a_column) and the function returns the integer SRID of the specified column by searching through the GEOMETRY_COLUMNS table.

DECLARE
	schem varchar =  $1;
	tabl varchar = $2;
	sr int4;
BEGIN
-- if the table contains a . and the schema is empty
-- split the table into a schema and a table
-- otherwise drop through to default behavior
	IF ( schem = '' and strpos(tabl,'.') > 0 ) THEN
	 schem = substr(tabl,1,strpos(tabl,'.')-1);
	 tabl = substr(tabl,length(schem)+2);
	END IF;

	select SRID into sr from geometry_columns where (f_table_schema = schem or schem = '') and f_table_name = tabl and f_geometry_column = $3;
	IF NOT FOUND THEN
	   RAISE EXCEPTION 'find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table?  Is there an uppercase/lowercase missmatch?';
	END IF;
	return sr;
END;

Function: geography(bytea)

Returns: geography

Language: C

geography_from_binary

Function: geography(public.geography, integer, boolean)

Returns: geography

Language: C

geography_enforce_typmod

Function: geography(public.geometry)

Returns: geography

Language: C

geography_from_geometry

Function: geography_analyze(internal)

Returns: boolean

Language: C

gserialized_analyze_nd

Function: geography_cmp(public.geography, public.geography)

Returns: integer

Language: C

geography_cmp

Function: geography_eq(public.geography, public.geography)

Returns: boolean

Language: C

geography_eq

Function: geography_ge(public.geography, public.geography)

Returns: boolean

Language: C

geography_ge

Function: geography_gist_compress(internal)

Returns: internal

Language: C

gserialized_gist_compress

Function: geography_gist_consistent(internal, public.geography, integer)

Returns: boolean

Language: C

gserialized_gist_consistent

Function: geography_gist_decompress(internal)

Returns: internal

Language: C

gserialized_gist_decompress

Function: geography_gist_penalty(internal, internal, internal)

Returns: internal

Language: C

gserialized_gist_penalty

Function: geography_gist_picksplit(internal, internal)

Returns: internal

Language: C

gserialized_gist_picksplit

Function: geography_gist_same(public.box2d, public.box2d, internal)

Returns: internal

Language: C

gserialized_gist_same

Function: geography_gist_union(bytea, internal)

Returns: internal

Language: C

gserialized_gist_union

Function: geography_gt(public.geography, public.geography)

Returns: boolean

Language: C

geography_gt

Function: geography_in(cstring, oid, integer)

Returns: geography

Language: C

geography_in

Function: geography_le(public.geography, public.geography)

Returns: boolean

Language: C

geography_le

Function: geography_lt(public.geography, public.geography)

Returns: boolean

Language: C

geography_lt

Function: geography_out(public.geography)

Returns: cstring

Language: C

geography_out

Function: geography_overlaps(public.geography, public.geography)

Returns: boolean

Language: C

gserialized_overlaps

Function: geography_recv(internal, oid, integer)

Returns: geography

Language: C

geography_recv

Function: geography_send(public.geography)

Returns: bytea

Language: C

geography_send

Function: geography_typmod_in(cstring[])

Returns: integer

Language: C

geography_typmod_in

Function: geography_typmod_out(integer)

Returns: cstring

Language: C

postgis_typmod_out

Function: geometry(bytea)

Returns: geometry

Language: C

LWGEOM_from_bytea

Function: geometry(path)

Returns: geometry

Language: C

path_to_geometry

Function: geometry(point)

Returns: geometry

Language: C

point_to_geometry

Function: geometry(polygon)

Returns: geometry

Language: C

polygon_to_geometry

Function: geometry(public.box2d)

Returns: geometry

Language: C

BOX2D_to_LWGEOM

Function: geometry(public.box3d)

Returns: geometry

Language: C

BOX3D_to_LWGEOM

Function: geometry(public.geography)

Returns: geometry

Language: C

geometry_from_geography

Function: geometry(public.geometry, integer, boolean)

Returns: geometry

Language: C

geometry_enforce_typmod

Function: geometry(text)

Returns: geometry

Language: C

parse_WKT_lwgeom

Function: geometry_above(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_above_2d

Function: geometry_analyze(internal)

Returns: boolean

Language: C

gserialized_analyze_nd

Function: geometry_below(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_below_2d

Function: geometry_cmp(geom1 public.geometry, geom2 public.geometry)

Returns: integer

Language: C

lwgeom_cmp

Function: geometry_contained_by_raster(public.geometry, public.raster)

Returns: boolean

Language: SQL

select $1 @ $2::geometry

Function: geometry_contains(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_contains_2d

Function: geometry_distance_box(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

gserialized_distance_box_2d

Function: geometry_distance_centroid(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

gserialized_distance_centroid_2d

Function: geometry_eq(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

lwgeom_eq

Function: geometry_ge(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

lwgeom_ge

Function: geometry_gist_compress_2d(internal)

Returns: internal

Language: C

gserialized_gist_compress_2d

Function: geometry_gist_compress_nd(internal)

Returns: internal

Language: C

gserialized_gist_compress

Function: geometry_gist_consistent_2d(internal, public.geometry, integer)

Returns: boolean

Language: C

gserialized_gist_consistent_2d

Function: geometry_gist_consistent_nd(internal, public.geometry, integer)

Returns: boolean

Language: C

gserialized_gist_consistent

Function: geometry_gist_decompress_2d(internal)

Returns: internal

Language: C

gserialized_gist_decompress_2d

Function: geometry_gist_decompress_nd(internal)

Returns: internal

Language: C

gserialized_gist_decompress

Function: geometry_gist_distance_2d(internal, public.geometry, integer)

Returns: double precision

Language: C

gserialized_gist_distance_2d

Function: geometry_gist_penalty_2d(internal, internal, internal)

Returns: internal

Language: C

gserialized_gist_penalty_2d

Function: geometry_gist_penalty_nd(internal, internal, internal)

Returns: internal

Language: C

gserialized_gist_penalty

Function: geometry_gist_picksplit_2d(internal, internal)

Returns: internal

Language: C

gserialized_gist_picksplit_2d

Function: geometry_gist_picksplit_nd(internal, internal)

Returns: internal

Language: C

gserialized_gist_picksplit

Function: geometry_gist_same_2d(geom1 public.geometry, geom2 public.geometry, internal)

Returns: internal

Language: C

gserialized_gist_same_2d

Function: geometry_gist_same_nd(public.geometry, public.geometry, internal)

Returns: internal

Language: C

gserialized_gist_same

Function: geometry_gist_union_2d(bytea, internal)

Returns: internal

Language: C

gserialized_gist_union_2d

Function: geometry_gist_union_nd(bytea, internal)

Returns: internal

Language: C

gserialized_gist_union

Function: geometry_gt(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

lwgeom_gt

Function: geometry_in(cstring)

Returns: geometry

Language: C

LWGEOM_in

Function: geometry_le(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

lwgeom_le

Function: geometry_left(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_left_2d

Function: geometry_lt(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

lwgeom_lt

Function: geometry_out(public.geometry)

Returns: cstring

Language: C

LWGEOM_out

Function: geometry_overabove(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_overabove_2d

Function: geometry_overbelow(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_overbelow_2d

Function: geometry_overlaps(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_overlaps_2d

Function: geometry_overlaps_nd(public.geometry, public.geometry)

Returns: boolean

Language: C

gserialized_overlaps

Function: geometry_overleft(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_overleft_2d

Function: geometry_overright(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_overright_2d

Function: geometry_raster_contain(public.geometry, public.raster)

Returns: boolean

Language: SQL

select $1 ~ $2::geometry

Function: geometry_raster_overlap(public.geometry, public.raster)

Returns: boolean

Language: SQL

select $1 && $2::geometry

Function: geometry_recv(internal)

Returns: geometry

Language: C

LWGEOM_recv

Function: geometry_right(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_right_2d

Function: geometry_same(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_same_2d

Function: geometry_send(public.geometry)

Returns: bytea

Language: C

LWGEOM_send

Function: geometry_typmod_in(cstring[])

Returns: integer

Language: C

geometry_typmod_in

Function: geometry_typmod_out(integer)

Returns: cstring

Language: C

postgis_typmod_out

Function: geometry_within(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

gserialized_within_2d

Function: geometrytype(public.geography)

Returns: text

Language: C

LWGEOM_getTYPE

Function: geometrytype(public.geometry)

Returns: text

Language: C

args: geomA - Returns the type of the geometry as a string. Eg: LINESTRING, POLYGON, MULTIPOINT, etc.

LWGEOM_getTYPE

Function: geomfromewkb(bytea)

Returns: geometry

Language: C

LWGEOMFromWKB

Function: geomfromewkt(text)

Returns: geometry

Language: C

parse_WKT_lwgeom

Function: get_proj4_from_srid(integer)

Returns: text

Language: PLPGSQL

BEGIN
	RETURN proj4text::text FROM spatial_ref_sys WHERE srid= $1;
END;

Function: gettransactionid()

Returns: xid

Language: C

getTransactionID

Function: gidx_in(cstring)

Returns: gidx

Language: C

gidx_in

Function: gidx_out(public.gidx)

Returns: cstring

Language: C

gidx_out

Function: gserialized_gist_joinsel_2d(internal, oid, internal, smallint)

Returns: double precision

Language: C

gserialized_gist_joinsel_2d

Function: gserialized_gist_joinsel_nd(internal, oid, internal, smallint)

Returns: double precision

Language: C

gserialized_gist_joinsel_nd

Function: gserialized_gist_sel_2d(internal, oid, internal, integer)

Returns: double precision

Language: C

gserialized_gist_sel_2d

Function: gserialized_gist_sel_nd(internal, oid, internal, integer)

Returns: double precision

Language: C

gserialized_gist_sel_nd

Function: gtrgm_compress(internal)

Returns: internal

Language: C

gtrgm_compress

Function: gtrgm_consistent(public.gtrgm, internal, integer)

Returns: boolean

Language: C

gtrgm_consistent

Function: gtrgm_decompress(internal)

Returns: internal

Language: C

gtrgm_decompress

Function: gtrgm_in(cstring)

Returns: gtrgm

Language: C

gtrgm_in

Function: gtrgm_out(public.gtrgm)

Returns: cstring

Language: C

gtrgm_out

Function: gtrgm_penalty(internal, internal, internal)

Returns: internal

Language: C

gtrgm_penalty

Function: gtrgm_picksplit(internal, internal)

Returns: internal

Language: C

gtrgm_picksplit

Function: gtrgm_same(public.gtrgm, public.gtrgm, internal)

Returns: internal

Language: C

gtrgm_same

Function: gtrgm_union(bytea, internal)

Returns: integer[]

Language: C

gtrgm_union

Function: index(public.ltree, public.ltree)

Returns: integer

Language: C

ltree_index

Function: index(public.ltree, public.ltree, integer)

Returns: integer

Language: C

ltree_index

Function: lca(public.ltree, public.ltree)

Returns: ltree

Language: C

lca

Function: lca(public.ltree, public.ltree, public.ltree)

Returns: ltree

Language: C

lca

Function: lca(public.ltree, public.ltree, public.ltree, public.ltree)

Returns: ltree

Language: C

lca

Function: lca(public.ltree, public.ltree, public.ltree, public.ltree, public.ltree)

Returns: ltree

Language: C

lca

Function: lca(public.ltree, public.ltree, public.ltree, public.ltree, public.ltree, public.ltree)

Returns: ltree

Language: C

lca

Function: lca(public.ltree, public.ltree, public.ltree, public.ltree, public.ltree, public.ltree, public.ltree)

Returns: ltree

Language: C

lca

Function: lca(public.ltree, public.ltree, public.ltree, public.ltree, public.ltree, public.ltree, public.ltree, public.ltree)

Returns: ltree

Language: C

lca

Function: lca(public.ltree[])

Returns: ltree

Language: C

_lca

Function: levenshtein(text, text)

Returns: integer

Language: C

levenshtein

Function: lockrow(text, text, text)

Returns: integer

Language: SQL

args: a_table_name, a_row_key, an_auth_token - Set lock/authorization for specific row in table

 SELECT LockRow(current_schema(), $1, $2, $3, now()::timestamp+'1:00'); 

Function: lockrow(text, text, text, text)

Returns: integer

Language: SQL

 SELECT LockRow($1, $2, $3, $4, now()::timestamp+'1:00'); 

Function: lockrow(text, text, text, text, timestamp without time zone)

Returns: integer

Language: PLPGSQL

args: a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt - Set lock/authorization for specific row in table

 
DECLARE
	myschema alias for $1;
	mytable alias for $2;
	myrid   alias for $3;
	authid alias for $4;
	expires alias for $5;
	ret int;
	mytoid oid;
	myrec RECORD;
	
BEGIN

	IF NOT LongTransactionsEnabled() THEN
		RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.';
	END IF;

	EXECUTE 'DELETE FROM authorization_table WHERE expires < now()'; 

	SELECT c.oid INTO mytoid FROM pg_class c, pg_namespace n
		WHERE c.relname = mytable
		AND c.relnamespace = n.oid
		AND n.nspname = myschema;

	-- RAISE NOTICE 'toid: %', mytoid;

	FOR myrec IN SELECT * FROM authorization_table WHERE 
		toid = mytoid AND rid = myrid
	LOOP
		IF myrec.authid != authid THEN
			RETURN 0;
		ELSE
			RETURN 1;
		END IF;
	END LOOP;

	EXECUTE 'INSERT INTO authorization_table VALUES ('||
		quote_literal(mytoid::text)||','||quote_literal(myrid)||
		','||quote_literal(expires::text)||
		','||quote_literal(authid) ||')';

	GET DIAGNOSTICS ret = ROW_COUNT;

	RETURN ret;
END;

Function: lockrow(text, text, text, timestamp without time zone)

Returns: integer

Language: SQL

args: a_table_name, a_row_key, an_auth_token, expire_dt - Set lock/authorization for specific row in table

 SELECT LockRow(current_schema(), $1, $2, $3, $4); 

Function: longtransactionsenabled()

Returns: boolean

Language: PLPGSQL

 
DECLARE
	rec RECORD;
BEGIN
	FOR rec IN SELECT oid FROM pg_class WHERE relname = 'authorized_tables'
	LOOP
		return 't';
	END LOOP;
	return 'f';
END;

Function: lquery_in(cstring)

Returns: lquery

Language: C

lquery_in

Function: lquery_out(public.lquery)

Returns: cstring

Language: C

lquery_out

Function: lt_q_regex(public.ltree, public.lquery[])

Returns: boolean

Language: C

lt_q_regex

Function: lt_q_rregex(public.lquery[], public.ltree)

Returns: boolean

Language: C

lt_q_rregex

Function: ltq_regex(public.ltree, public.lquery)

Returns: boolean

Language: C

ltq_regex

Function: ltq_rregex(public.lquery, public.ltree)

Returns: boolean

Language: C

ltq_rregex

Function: ltree2text(public.ltree)

Returns: text

Language: C

ltree2text

Function: ltree_addltree(public.ltree, public.ltree)

Returns: ltree

Language: C

ltree_addltree

Function: ltree_addtext(public.ltree, text)

Returns: ltree

Language: C

ltree_addtext

Function: ltree_cmp(public.ltree, public.ltree)

Returns: integer

Language: C

ltree_cmp

Function: ltree_compress(internal)

Returns: internal

Language: C

ltree_compress

Function: ltree_consistent(internal, internal, smallint)

Returns: boolean

Language: C

ltree_consistent

Function: ltree_decompress(internal)

Returns: internal

Language: C

ltree_decompress

Function: ltree_eq(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_eq

Function: ltree_ge(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_ge

Function: ltree_gist_in(cstring)

Returns: ltree_gist

Language: C

ltree_gist_in

Function: ltree_gist_out(public.ltree_gist)

Returns: cstring

Language: C

ltree_gist_out

Function: ltree_gt(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_gt

Function: ltree_in(cstring)

Returns: ltree

Language: C

ltree_in

Function: ltree_isparent(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_isparent

Function: ltree_le(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_le

Function: ltree_lt(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_lt

Function: ltree_ne(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_ne

Function: ltree_out(public.ltree)

Returns: cstring

Language: C

ltree_out

Function: ltree_penalty(internal, internal, internal)

Returns: internal

Language: C

ltree_penalty

Function: ltree_picksplit(internal, internal)

Returns: internal

Language: C

ltree_picksplit

Function: ltree_risparent(public.ltree, public.ltree)

Returns: boolean

Language: C

ltree_risparent

Function: ltree_same(internal, internal, internal)

Returns: internal

Language: C

ltree_same

Function: ltree_textadd(text, public.ltree)

Returns: ltree

Language: C

ltree_textadd

Function: ltree_union(internal, internal)

Returns: integer

Language: C

ltree_union

Function: ltxtq_exec(public.ltree, public.ltxtquery)

Returns: boolean

Language: C

ltxtq_exec

Function: ltxtq_in(cstring)

Returns: ltxtquery

Language: C

ltxtq_in

Function: ltxtq_out(public.ltxtquery)

Returns: cstring

Language: C

ltxtq_out

Function: ltxtq_rexec(public.ltxtquery, public.ltree)

Returns: boolean

Language: C

ltxtq_rexec

Function: metaphone(text, integer)

Returns: text

Language: C

metaphone

Function: nlevel(public.ltree)

Returns: integer

Language: C

nlevel

Function: path(public.geometry)

Returns: path

Language: C

geometry_to_path

Function: pgis_abs_in(cstring)

Returns: pgis_abs

Language: C

pgis_abs_in

Function: pgis_abs_out(public.pgis_abs)

Returns: cstring

Language: C

pgis_abs_out

Function: pgis_geometry_accum_finalfn(public.pgis_abs)

Returns: geometry[]

Language: C

pgis_geometry_accum_finalfn

Function: pgis_geometry_accum_transfn(public.pgis_abs, public.geometry)

Returns: pgis_abs

Language: C

pgis_geometry_accum_transfn

Function: pgis_geometry_collect_finalfn(public.pgis_abs)

Returns: geometry

Language: C

pgis_geometry_collect_finalfn

Function: pgis_geometry_makeline_finalfn(public.pgis_abs)

Returns: geometry

Language: C

pgis_geometry_makeline_finalfn

Function: pgis_geometry_polygonize_finalfn(public.pgis_abs)

Returns: geometry

Language: C

pgis_geometry_polygonize_finalfn

Function: pgis_geometry_union_finalfn(public.pgis_abs)

Returns: geometry

Language: C

pgis_geometry_union_finalfn

Function: plpgsql_validator(oid)

Returns: void

Language: C

plpgsql_validator

Function: point(public.geometry)

Returns: point

Language: C

geometry_to_point

Function: polygon(public.geometry)

Returns: polygon

Language: C

geometry_to_polygon

Function: populate_geometry_columns(tbl_oid oid, use_typmod boolean)

Returns: integer

Language: PLPGSQL

args: relation_oid, use_typmod=true - Ensures geometry columns are defined with type modifiers or have appropriate spatial constraints This ensures they will be registered correctly in geometry_columns view. By default will convert all geometry columns with no type modifier to ones with type modifiers. To get old behavior set use_typmod=false

DECLARE
	gcs         RECORD;
	gc          RECORD;
	gc_old      RECORD;
	gsrid       integer;
	gndims      integer;
	gtype       text;
	query       text;
	gc_is_valid boolean;
	inserted    integer;
	constraint_successful boolean := false;

BEGIN
	inserted := 0;

	-- Iterate through all geometry columns in this table
	FOR gcs IN
	SELECT n.nspname, c.relname, a.attname
		FROM pg_class c,
			 pg_attribute a,
			 pg_type t,
			 pg_namespace n
		WHERE c.relkind = 'r'
		AND t.typname = 'geometry'
		AND a.attisdropped = false
		AND a.atttypid = t.oid
		AND a.attrelid = c.oid
		AND c.relnamespace = n.oid
		AND n.nspname NOT ILIKE 'pg_temp%'
		AND c.oid = tbl_oid
	LOOP

        RAISE DEBUG 'Processing column %.%.%', gcs.nspname, gcs.relname, gcs.attname;
    
        gc_is_valid := true;
        -- Find the srid, coord_dimension, and type of current geometry
        -- in geometry_columns -- which is now a view
        
        SELECT type, srid, coord_dimension INTO gc_old 
            FROM geometry_columns 
            WHERE f_table_schema = gcs.nspname AND f_table_name = gcs.relname AND f_geometry_column = gcs.attname; 
            
        IF upper(gc_old.type) = 'GEOMETRY' THEN
        -- This is an unconstrained geometry we need to do something
        -- We need to figure out what to set the type by inspecting the data
            EXECUTE 'SELECT st_srid(' || quote_ident(gcs.attname) || ') As srid, GeometryType(' || quote_ident(gcs.attname) || ') As type, ST_NDims(' || quote_ident(gcs.attname) || ') As dims ' ||
                     ' FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || 
                     ' WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1;'
                INTO gc;
            IF gc IS NULL THEN -- there is no data so we can not determine geometry type
            	RAISE WARNING 'No data in table %.%, so no information to determine geometry type and srid', gcs.nspname, gcs.relname;
            	RETURN 0;
            END IF;
            gsrid := gc.srid; gtype := gc.type; gndims := gc.dims;
            	
            IF use_typmod THEN
                BEGIN
                    EXECUTE 'ALTER TABLE ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' ALTER COLUMN ' || quote_ident(gcs.attname) || 
                        ' TYPE geometry(' || postgis_type_name(gtype, gndims, true) || ', ' || gsrid::text  || ') ';
                    inserted := inserted + 1;
                EXCEPTION
                        WHEN invalid_parameter_value OR feature_not_supported THEN
                        RAISE WARNING 'Could not convert ''%'' in ''%.%'' to use typmod with srid %, type %: %', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), gsrid, postgis_type_name(gtype, gndims, true), SQLERRM;
                            gc_is_valid := false;
                END;
                
            ELSE
                -- Try to apply srid check to column
            	constraint_successful = false;
                IF (gsrid > 0 AND postgis_constraint_srid(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
                    BEGIN
                        EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || 
                                 ' ADD CONSTRAINT ' || quote_ident('enforce_srid_' || gcs.attname) || 
                                 ' CHECK (st_srid(' || quote_ident(gcs.attname) || ') = ' || gsrid || ')';
                        constraint_successful := true;
                    EXCEPTION
                        WHEN check_violation THEN
                            RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (st_srid(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gsrid;
                            gc_is_valid := false;
                    END;
                END IF;
                
                -- Try to apply ndims check to column
                IF (gndims IS NOT NULL AND postgis_constraint_dims(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
                    BEGIN
                        EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
                                 ADD CONSTRAINT ' || quote_ident('enforce_dims_' || gcs.attname) || '
                                 CHECK (st_ndims(' || quote_ident(gcs.attname) || ') = '||gndims||')';
                        constraint_successful := true;
                    EXCEPTION
                        WHEN check_violation THEN
                            RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (st_ndims(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gndims;
                            gc_is_valid := false;
                    END;
                END IF;
    
                -- Try to apply geometrytype check to column
                IF (gtype IS NOT NULL AND postgis_constraint_type(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
                    BEGIN
                        EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
                        ADD CONSTRAINT ' || quote_ident('enforce_geotype_' || gcs.attname) || '
                        CHECK ((geometrytype(' || quote_ident(gcs.attname) || ') = ' || quote_literal(gtype) || ') OR (' || quote_ident(gcs.attname) || ' IS NULL))';
                        constraint_successful := true;
                    EXCEPTION
                        WHEN check_violation THEN
                            -- No geometry check can be applied. This column contains a number of geometry types.
                            RAISE WARNING 'Could not add geometry type check (%) to table column: %.%.%', gtype, quote_ident(gcs.nspname),quote_ident(gcs.relname),quote_ident(gcs.attname);
                    END;
                END IF;
                 --only count if we were successful in applying at least one constraint
                IF constraint_successful THEN
                	inserted := inserted + 1;
                END IF;
            END IF;	        
	    END IF;

	END LOOP;

	RETURN inserted;
END


Function: populate_geometry_columns(use_typmod boolean)

Returns: text

Language: PLPGSQL

args: use_typmod=true - Ensures geometry columns are defined with type modifiers or have appropriate spatial constraints This ensures they will be registered correctly in geometry_columns view. By default will convert all geometry columns with no type modifier to ones with type modifiers. To get old behavior set use_typmod=false

DECLARE
	inserted    integer;
	oldcount    integer;
	probed      integer;
	stale       integer;
	gcs         RECORD;
	gc          RECORD;
	gsrid       integer;
	gndims      integer;
	gtype       text;
	query       text;
	gc_is_valid boolean;

BEGIN
	SELECT count(*) INTO oldcount FROM geometry_columns;
	inserted := 0;

	-- Count the number of geometry columns in all tables and views
	SELECT count(DISTINCT c.oid) INTO probed
	FROM pg_class c,
		 pg_attribute a,
		 pg_type t,
		 pg_namespace n
	WHERE (c.relkind = 'r' OR c.relkind = 'v')
		AND t.typname = 'geometry'
		AND a.attisdropped = false
		AND a.atttypid = t.oid
		AND a.attrelid = c.oid
		AND c.relnamespace = n.oid
		AND n.nspname NOT ILIKE 'pg_temp%' AND c.relname != 'raster_columns' ;

	-- Iterate through all non-dropped geometry columns
	RAISE DEBUG 'Processing Tables.....';

	FOR gcs IN
	SELECT DISTINCT ON (c.oid) c.oid, n.nspname, c.relname
		FROM pg_class c,
			 pg_attribute a,
			 pg_type t,
			 pg_namespace n
		WHERE c.relkind = 'r'
		AND t.typname = 'geometry'
		AND a.attisdropped = false
		AND a.atttypid = t.oid
		AND a.attrelid = c.oid
		AND c.relnamespace = n.oid
		AND n.nspname NOT ILIKE 'pg_temp%' AND c.relname != 'raster_columns' 
	LOOP

		inserted := inserted + populate_geometry_columns(gcs.oid, use_typmod);
	END LOOP;

	IF oldcount > inserted THEN
	    stale = oldcount-inserted;
	ELSE
	    stale = 0;
	END IF;

	RETURN 'probed:' ||probed|| ' inserted:'||inserted;
END


Function: postgis_addbbox(public.geometry)

Returns: geometry

Language: C

args: geomA - Add bounding box to the geometry.

LWGEOM_addBBOX

Function: postgis_cache_bbox()

Returns: trigger

Language: C

cache_bbox

Function: postgis_constraint_dims(geomschema text, geomtable text, geomcolumn text)

Returns: integer

Language: SQL

SELECT  replace(split_part(s.consrc, ' = ', 2), ')', '')::integer
		 FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
		 WHERE n.nspname = $1
		 AND c.relname = $2
		 AND a.attname = $3
		 AND a.attrelid = c.oid
		 AND s.connamespace = n.oid
		 AND s.conrelid = c.oid
		 AND a.attnum = ANY (s.conkey)
		 AND s.consrc LIKE '%ndims(% = %';

Function: postgis_constraint_srid(geomschema text, geomtable text, geomcolumn text)

Returns: integer

Language: SQL

SELECT replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '')::integer
		 FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
		 WHERE n.nspname = $1
		 AND c.relname = $2
		 AND a.attname = $3
		 AND a.attrelid = c.oid
		 AND s.connamespace = n.oid
		 AND s.conrelid = c.oid
		 AND a.attnum = ANY (s.conkey)
		 AND s.consrc LIKE '%srid(% = %';

Function: postgis_constraint_type(geomschema text, geomtable text, geomcolumn text)

Returns: character varying

Language: SQL

SELECT  replace(split_part(s.consrc, '''', 2), ')', '')::varchar		
		 FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
		 WHERE n.nspname = $1
		 AND c.relname = $2
		 AND a.attname = $3
		 AND a.attrelid = c.oid
		 AND s.connamespace = n.oid
		 AND s.conrelid = c.oid
		 AND a.attnum = ANY (s.conkey)
		 AND s.consrc LIKE '%geometrytype(% = %';

Function: postgis_dropbbox(public.geometry)

Returns: geometry

Language: C

args: geomA - Drop the bounding box cache from the geometry.

LWGEOM_dropBBOX

Function: postgis_full_version()

Returns: text

Language: PLPGSQL

Reports full postgis version and build configuration infos.

DECLARE
	libver text;
	svnver text;
	projver text;
	geosver text;
	sfcgalver text;
	cgalver text;
	gdalver text;
	libxmlver text;
	dbproc text;
	relproc text;
	fullver text;
	rast_lib_ver text;
	rast_scr_ver text;
	topo_scr_ver text;
	json_lib_ver text;
BEGIN
	SELECT postgis_lib_version() INTO libver;
	SELECT postgis_proj_version() INTO projver;
	SELECT postgis_geos_version() INTO geosver;
	SELECT postgis_libjson_version() INTO json_lib_ver;
	BEGIN
		SELECT postgis_gdal_version() INTO gdalver;
	EXCEPTION
		WHEN undefined_function THEN
			gdalver := NULL;
			RAISE NOTICE 'Function postgis_gdal_version() not found.  Is raster support enabled and rtpostgis.sql installed?';
	END;
	BEGIN
		SELECT postgis_sfcgal_version() INTO sfcgalver;
	EXCEPTION
		WHEN undefined_function THEN
			sfcgalver := NULL;
	END;
	SELECT postgis_libxml_version() INTO libxmlver;
	SELECT postgis_scripts_installed() INTO dbproc;
	SELECT postgis_scripts_released() INTO relproc;
	select postgis_svn_version() INTO svnver;
	BEGIN
		SELECT topology.postgis_topology_scripts_installed() INTO topo_scr_ver;
	EXCEPTION
		WHEN undefined_function OR invalid_schema_name THEN
			topo_scr_ver := NULL;
			RAISE NOTICE 'Function postgis_topology_scripts_installed() not found. Is topology support enabled and topology.sql installed?';
		WHEN insufficient_privilege THEN
			RAISE NOTICE 'Topology support cannot be inspected. Is current user granted USAGE on schema "topology" ?';
		WHEN OTHERS THEN
			RAISE NOTICE 'Function postgis_topology_scripts_installed() could not be called: % (%)', SQLERRM, SQLSTATE;
	END;

	BEGIN
		SELECT postgis_raster_scripts_installed() INTO rast_scr_ver;
	EXCEPTION
		WHEN undefined_function THEN
			rast_scr_ver := NULL;
			RAISE NOTICE 'Function postgis_raster_scripts_installed() not found. Is raster support enabled and rtpostgis.sql installed?';
	END;

	BEGIN
		SELECT postgis_raster_lib_version() INTO rast_lib_ver;
	EXCEPTION
		WHEN undefined_function THEN
			rast_lib_ver := NULL;
			RAISE NOTICE 'Function postgis_raster_lib_version() not found. Is raster support enabled and rtpostgis.sql installed?';
	END;

	fullver = 'POSTGIS="' || libver;

	IF  svnver IS NOT NULL THEN
		fullver = fullver || ' r' || svnver;
	END IF;

	fullver = fullver || '"';

	IF  geosver IS NOT NULL THEN
		fullver = fullver || ' GEOS="' || geosver || '"';
	END IF;

	IF  sfcgalver IS NOT NULL THEN
		fullver = fullver || ' SFCGAL="' || sfcgalver || '"';
	END IF;

	IF  projver IS NOT NULL THEN
		fullver = fullver || ' PROJ="' || projver || '"';
	END IF;

	IF  gdalver IS NOT NULL THEN
		fullver = fullver || ' GDAL="' || gdalver || '"';
	END IF;

	IF  libxmlver IS NOT NULL THEN
		fullver = fullver || ' LIBXML="' || libxmlver || '"';
	END IF;

	IF json_lib_ver IS NOT NULL THEN
		fullver = fullver || ' LIBJSON="' || json_lib_ver || '"';
	END IF;

	-- fullver = fullver || ' DBPROC="' || dbproc || '"';
	-- fullver = fullver || ' RELPROC="' || relproc || '"';

	IF dbproc != relproc THEN
		fullver = fullver || ' (core procs from "' || dbproc || '" need upgrade)';
	END IF;

	IF topo_scr_ver IS NOT NULL THEN
		fullver = fullver || ' TOPOLOGY';
		IF topo_scr_ver != relproc THEN
			fullver = fullver || ' (topology procs from "' || topo_scr_ver || '" need upgrade)';
		END IF;
	END IF;

	IF rast_lib_ver IS NOT NULL THEN
		fullver = fullver || ' RASTER';
		IF rast_lib_ver != relproc THEN
			fullver = fullver || ' (raster lib from "' || rast_lib_ver || '" need upgrade)';
		END IF;
	END IF;

	IF rast_scr_ver IS NOT NULL AND rast_scr_ver != relproc THEN
		fullver = fullver || ' (raster procs from "' || rast_scr_ver || '" need upgrade)';
	END IF;

	RETURN fullver;
END

Function: postgis_gdal_version()

Returns: text

Language: C

RASTER_gdal_version

Function: postgis_geos_version()

Returns: text

Language: C

Returns the version number of the GEOS library.

postgis_geos_version

Function: postgis_getbbox(public.geometry)

Returns: box2d

Language: C

LWGEOM_to_BOX2D

Function: postgis_hasbbox(public.geometry)

Returns: boolean

Language: C

args: geomA - Returns TRUE if the bbox of this geometry is cached, FALSE otherwise.

LWGEOM_hasBBOX

Function: postgis_lib_build_date()

Returns: text

Language: C

Returns build date of the PostGIS library.

postgis_lib_build_date

Function: postgis_lib_version()

Returns: text

Language: C

Returns the version number of the PostGIS library.

postgis_lib_version

Function: postgis_libjson_version()

Returns: text

Language: C

postgis_libjson_version

Function: postgis_libxml_version()

Returns: text

Language: C

Returns the version number of the libxml2 library.

postgis_libxml_version

Function: postgis_noop(public.geometry)

Returns: geometry

Language: C

LWGEOM_noop

Function: postgis_proj_version()

Returns: text

Language: C

Returns the version number of the PROJ4 library.

postgis_proj_version

Function: postgis_raster_lib_build_date()

Returns: text

Language: C

Reports full raster library build date.

RASTER_lib_build_date

Function: postgis_raster_lib_version()

Returns: text

Language: C

Reports full raster version and build configuration infos.

RASTER_lib_version

Function: postgis_raster_scripts_installed()

Returns: text

Language: SQL

 SELECT '2.1.8'::text || ' r' || 13780::text AS version 

Function: postgis_scripts_build_date()

Returns: text

Language: SQL

Returns build date of the PostGIS scripts.

SELECT '2015-07-11 13:49:24'::text AS version

Function: postgis_scripts_installed()

Returns: text

Language: SQL

Returns version of the postgis scripts installed in this database.

 SELECT '2.1.8'::text || ' r' || 13780::text AS version 

Function: postgis_scripts_released()

Returns: text

Language: C

Returns the version number of the postgis.sql script released with the installed postgis lib.

postgis_scripts_released

Function: postgis_svn_version()

Returns: text

Language: C

postgis_svn_version

Function: postgis_transform_geometry(public.geometry, text, text, integer)

Returns: geometry

Language: C

transform_geom

Function: postgis_type_name(geomname character varying, coord_dimension integer, use_new_name boolean)

Returns: character varying

Language: SQL

 SELECT CASE WHEN $3 THEN new_name ELSE old_name END As geomname
 	FROM 
 	( VALUES
 		 ('GEOMETRY', 'Geometry', 2) ,
 		 	('GEOMETRY', 'GeometryZ', 3) ,
 		 	('GEOMETRY', 'GeometryZM', 4) ,
			('GEOMETRYCOLLECTION', 'GeometryCollection', 2) ,
			('GEOMETRYCOLLECTION', 'GeometryCollectionZ', 3) ,
			('GEOMETRYCOLLECTIONM', 'GeometryCollectionM', 3) ,
			('GEOMETRYCOLLECTION', 'GeometryCollectionZM', 4) ,
			
			('POINT', 'Point',2) ,
			('POINTM','PointM',3) ,
			('POINT', 'PointZ',3) ,
			('POINT', 'PointZM',4) ,
			
			('MULTIPOINT','MultiPoint',2) ,
			('MULTIPOINT','MultiPointZ',3) ,
			('MULTIPOINTM','MultiPointM',3) ,
			('MULTIPOINT','MultiPointZM',4) ,
			
			('POLYGON', 'Polygon',2) ,
			('POLYGON', 'PolygonZ',3) ,
			('POLYGONM', 'PolygonM',3) ,
			('POLYGON', 'PolygonZM',4) ,
			
			('MULTIPOLYGON', 'MultiPolygon',2) ,
			('MULTIPOLYGON', 'MultiPolygonZ',3) ,
			('MULTIPOLYGONM', 'MultiPolygonM',3) ,
			('MULTIPOLYGON', 'MultiPolygonZM',4) ,
			
			('MULTILINESTRING', 'MultiLineString',2) ,
			('MULTILINESTRING', 'MultiLineStringZ',3) ,
			('MULTILINESTRINGM', 'MultiLineStringM',3) ,
			('MULTILINESTRING', 'MultiLineStringZM',4) ,
			
			('LINESTRING', 'LineString',2) ,
			('LINESTRING', 'LineStringZ',3) ,
			('LINESTRINGM', 'LineStringM',3) ,
			('LINESTRING', 'LineStringZM',4) ,
			
			('CIRCULARSTRING', 'CircularString',2) ,
			('CIRCULARSTRING', 'CircularStringZ',3) ,
			('CIRCULARSTRINGM', 'CircularStringM',3) ,
			('CIRCULARSTRING', 'CircularStringZM',4) ,
			
			('COMPOUNDCURVE', 'CompoundCurve',2) ,
			('COMPOUNDCURVE', 'CompoundCurveZ',3) ,
			('COMPOUNDCURVEM', 'CompoundCurveM',3) ,
			('COMPOUNDCURVE', 'CompoundCurveZM',4) ,
			
			('CURVEPOLYGON', 'CurvePolygon',2) ,
			('CURVEPOLYGON', 'CurvePolygonZ',3) ,
			('CURVEPOLYGONM', 'CurvePolygonM',3) ,
			('CURVEPOLYGON', 'CurvePolygonZM',4) ,
			
			('MULTICURVE', 'MultiCurve',2 ) ,
			('MULTICURVE', 'MultiCurveZ',3 ) ,
			('MULTICURVEM', 'MultiCurveM',3 ) ,
			('MULTICURVE', 'MultiCurveZM',4 ) ,
			
			('MULTISURFACE', 'MultiSurface', 2) ,
			('MULTISURFACE', 'MultiSurfaceZ', 3) ,
			('MULTISURFACEM', 'MultiSurfaceM', 3) ,
			('MULTISURFACE', 'MultiSurfaceZM', 4) ,
			
			('POLYHEDRALSURFACE', 'PolyhedralSurface',2) ,
			('POLYHEDRALSURFACE', 'PolyhedralSurfaceZ',3) ,
			('POLYHEDRALSURFACEM', 'PolyhedralSurfaceM',3) ,
			('POLYHEDRALSURFACE', 'PolyhedralSurfaceZM',4) ,
			
			('TRIANGLE', 'Triangle',2) ,
			('TRIANGLE', 'TriangleZ',3) ,
			('TRIANGLEM', 'TriangleM',3) ,
			('TRIANGLE', 'TriangleZM',4) ,

			('TIN', 'Tin', 2),
			('TIN', 'TinZ', 3),
			('TIN', 'TinM', 3),
			('TIN', 'TinZM', 4) )
			 As g(old_name, new_name, coord_dimension)
		WHERE (upper(old_name) = upper($1) OR upper(new_name) = upper($1))
			AND coord_dimension = $2;

Function: postgis_typmod_dims(integer)

Returns: integer

Language: C

postgis_typmod_dims

Function: postgis_typmod_srid(integer)

Returns: integer

Language: C

postgis_typmod_srid

Function: postgis_typmod_type(integer)

Returns: text

Language: C

postgis_typmod_type

Function: postgis_version()

Returns: text

Language: C

Returns PostGIS version number and compile-time options.

postgis_version

Function: pvs_candidate_shorthand(can_id integer)

Returns: text

Language: PLPGSQL

DECLARE shorthand text;
BEGIN
SELECT DISTINCT
        CASE o.officetype_id 
                WHEN 'C' THEN 
                        CASE o.office_id
                                WHEN 5 THEN 'CD-' || odn.name || ' (' || oc.state_id || ')'
                                WHEN 6 THEN odn.name || ' ' || o.title || ' (' || oc.state_id || ')'
                        END
                WHEN 'L' THEN oc.state_id || '-' || substring(o.name from 1 for 1) || '-' || odn.name 
                WHEN 'P' THEN o.title
                ELSE CASE WHEN o.title IS NOT NULL THEN o.title || ' (' || oc.state_id || ')' ELSE '' END
        END 
        || CASE WHEN eo.officetype_id IS NOT NULL THEN ' Running for ' ELSE '' END
        || CASE eo.officetype_id 
WHEN 'C' THEN 
                        CASE eo.office_id
                                WHEN 5 THEN 'CD-' || edn.name || ' (' || ec.state_id || ')'
                                WHEN 6 THEN CASE WHEN edn.name IS NOT NULL THEN edn.name ELSE '' END || ' ' || eo.title || ' (' || ec.state_id || ')'
                        END
                WHEN 'L' THEN ec.state_id || '-' || substring(eo.name from 1 for 1) || '-' || edn.name 
                WHEN 'P' THEN eo.title
                ELSE CASE WHEN eo.title IS NOT NULL THEN eo.title || ' (' || ec.state_id || ')' ELSE '' END
        END INTO shorthand
        FROM candidate c
        LEFT JOIN election_candidate ec ON ec.candidate_id = c.candidate_id AND (SELECT TRUE FROM electionstage_candidate sesc WHERE sesc.election_candidate_id = ec.election_candidate_id AND sesc.electioncandidatestatus_id IN (6,8,9,12) LIMIT 1)
        LEFT JOIN office eo ON eo.office_id = ec.office_id
        LEFT JOIN electionstage_candidate esc ON esc.election_candidate_id = ec.election_candidate_id
        LEFT JOIN districtname edn USING (districtname_id)
        LEFT JOIN office_candidate oc ON oc.candidate_id = c.candidate_id AND oc.officecandidatestatus_id IN (1,3,4)
        LEFT JOIN office o ON o.office_id = oc.office_id
        LEFT JOIN districtname odn ON odn.districtname_id = oc.districtname_id
        WHERE
                c.candidate_id = can_id;
RETURN shorthand;
END;

Function: pvs_convert_ratingstring(ratingstring character varying)

Returns: integer

Language: PLPGSQL

DECLARE 
plus integer;
len integer;
i integer;
currentstr varchar;
begin
len := 0;
i := 0;
plus := 0;
WHILE i <= length(ratingstring) LOOP
	currentstr := substring(lower(ratingstring) FROM i FOR 1);
	if(currentstr IN ('+','-','w','r','y','n')) THEN
		len := len+1;
		if (currentstr IN ('+','r','y')) THEN
			plus := plus+1;
		END IF;
	END IF;
	i := i + 1;
END LOOP;
if (len > 0) THEN
	return (round(plus*100.00/len));
ELSE
	return NULL;
END IF;
END

Function: pvs_delete_npatmatrix(integer)

Returns: integer

Language: PLPGSQL

 BEGIN

DELETE FROM npatmatrix WHERE npatform_id = $1;
 DELETE FROM npatrow WHERE NOT EXISTS (SELECT 1 FROM npatmatrix nm WHERE nm.npatrow_id = npatrow.npatrow_id);
 DELETE FROM npatrowtext WHERE NOT EXISTS (SELECT 1 FROM npatrow nr WHERE nr.npatrowtext_id = npatrowtext.npatrowtext_id);
 RETURN 1;
END;

Function: pvs_election_party(ec_id integer)

Returns: character varying

Language: PLPGSQL


        DECLARE names RECORD;parties text;BEGIN parties = '';FOR names IN SELECT DISTINCT name FROM (SELECT p.name, p.rank FROM electionstage_candidate_party ecp JOIN electionstage_candidate esc USING (electionstage_candidate_id) JOIN election_electionstage ees USING (election_electionstage_id) JOIN party p ON p.party_id = ecp.party_id WHERE esc.election_candidate_id = ec_id ORDER BY ees.state_id = 'NA' DESC, p.rank, p.name) foo  LOOP   parties := parties || ', ' || names.name;END LOOP;RETURN ltrim(parties,', ');END ;
        

Function: pvs_electionstage_party(esc_id integer)

Returns: character varying

Language: PLPGSQL

DECLARE names RECORD;parties text;BEGIN parties = '';FOR names IN SELECT DISTINCT p.name, p.rank FROM electionstage_candidate_party ecp JOIN party p USING (party_id) WHERE electionstage_candidate_id = esc_id ORDER BY p.rank, p.name LOOP   parties := parties || ', ' || names.name;END LOOP;RETURN ltrim(parties,', ');END ; 

Function: pvs_get_congpath(integer)

Returns: ltree

Language: PLPGSQL

DECLARE
        child integer;
        current_cong integer;
        working_path text;
BEGIN
        child := $1;
        working_path := child;
        LOOP
           SELECT parent_id FROM congress WHERE congress_id = child  INTO current_cong;
           IF current_cong IS NULL OR child=current_cong THEN
                EXIT;
           ELSE
                   working_path := current_cong || '.' || working_path; child:=current_cong;
           END IF;                                                     
           RAISE NOTICE '%', working_path;
        END LOOP;                         
        RETURN text2ltree(working_path);
END;                                    

Function: pvs_get_npatpath(integer)

Returns: ltree

Language: PLPGSQL

 DECLARE
        current_id integer;
        working_path text;
        matrixrow RECORD;
BEGIN
        current_id = $1;
        working_path = '';
  WHILE current_id IS NOT NULL LOOP
        SELECT * INTO matrixrow FROM npatmatrix nm, (SELECT max(nm.rank) AS rank, nm.npatform_id  FROM npatmatrix
 nm , (SELECT * FROM npatmatrix WHERE npatmatrix_id = current_id) nm_curr WHERE nm.rank < nm_curr.rank AND nlevel
(nm.path)  =nlevel(nm_curr.path) -1 AND nlevel(nm_curr.path) != 1 AND nm.npatform_id = nm_curr.npatform_id GROUP
BY nm.npatform_id) nm_ WHERE nm.npatform_id = nm_.npatform_id AND nm.rank = nm_.rank;
                IF FOUND THEN
                        working_path = matrixrow.npatmatrix_id || '.' || working_path;
                        current_id = matrixrow.npatmatrix_id;ELSE
                        EXIT;
                END IF;
        END LOOP;

        RETURN text2ltree(working_path || $1);
END;

Function: pvs_merge_candidate(oldid integer, newid integer)

Returns: character varying

Language: SQL

   -- election candidate
    UPDATE election_candidate set candidate_id = $2  WHERE candidate_id = $1 AND NOT EXISTS (SELECT 1 FROM election_candidate ec WHERE ec.candidate_id = $2 and election_candidate.election_id = ec.election_id);
    -- office candidate
    UPDATE office_candidate set candidate_id = $2 where candidate_id = $1;
    -- rating candidate, deal with possible duplicate ratings
    UPDATE rating_candidate set candidate_id = $2 where candidate_id = $1 AND NOT EXISTS (SELECT 1 FROM rating_candidate rc WHERE rc.candidate_id = $2 AND rating_candidate.rating_id = rc.rating_id);
    -- additional candidate
    UPDATE additional_candidate set candidate_id = $2 WHERE candidate_id = $1 AND NOT EXISTS (SELECT 1 FROM additional_candidate ac WHERE ac.candidate_id = $2 AND additional_candidate.additional_id = ac.additional_id);
UPDATE education  set candidate_id = $2  WHERE candidate_id = $1 AND NOT EXISTS (SELECT 1 FROM education  ec WHERE ec.candidate_id = $2 and education.school = ec.school AND education.degree = ec.degree);
UPDATE experience  set candidate_id = $2  WHERE candidate_id = $1 AND NOT EXISTS (SELECT 1 FROM experience  ec WHERE ec.candidate_id = $2 and experience.organization = ec.organization AND experience.title = ec.title);
    -- speech_candidate
    UPDATE speech_candidate set candidate_id = $2 where candidate_id = $1;
    -- contact_candidate
    UPDATE contact_candidate set candidate_id = $2 where candidate_id = $1;
    -- candidate release, set new to old if old is less than new
    UPDATE candidate set release_id = c1.release_id FROM candidate c1 WHERE c1.candidate_id = $1 and candidate.candidate_id = $2 AND candidate.release_id < c1.release_id;
    -- finsource
    UPDATE finsource_candidate set candidate_id = $2 WHERE candidate_id = $1 AND NOT EXISTS (SELECT 1 FROM finsource_candidate fc WHERE fc.candidate_id = $2 AND finsource_candidate.finsource_id = fc.finsource_id);
    -- Update password
    update candidate set password = c1.password from candidate c1 WHERE candidate.password IS NULL AND c1.candidate_id = $1 AND candidate.candidate_id = $2 AND c1.password IS NOT NULL; 
    -- Update bioid
    update candidate set bioid = c1.bioid from candidate c1 WHERE (candidate.bioid IS NULL or candidate.bioid = '') AND c1.candidate_id = $1 AND candidate.candidate_id = $2 AND c1.bioid IS NOT NULL;    
    
    insert into merge_candidate VALUES ($1, $2, now());
    SELECT  'Merged ' || $1 || ' into ' || $2 || ', please delete ' || $1 || ' when done' AS result;    

Function: pvs_merge_tag(oldid integer, newid integer)

Returns: void

Language: SQL

update speech_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM speech_tag st WHERE st.tag_id = $2 AND speech_tag.speech_id = st.speech_id);
update congcategory_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM congcategory_tag st WHERE st.tag_id = $2 AND congcategory_tag.congcategory_id = st.congcategory_id);
update npatanswer_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM npatanswer_tag st WHERE st.tag_id = $2 AND npatanswer_tag.npatanswer_id = st.npatanswer_id);
update biotext_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM biotext_tag st WHERE st.tag_id = $2 AND biotext_tag.biotext_id = st.biotext_id);
update rating_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM rating_tag st WHERE st.tag_id = $2 AND rating_tag.rating_id = st.rating_id);
update measure_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM measure_tag st WHERE st.tag_id = $2 AND measure_tag.measure_id = st.measure_id);
update committee_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM committee_tag st WHERE st.tag_id = $2 AND committee_tag.committee_id = st.committee_id);
update sig_tag set tag_id = $2 WHERE tag_id = $1 AND NOT EXISTS (SELECT 1 FROM sig_tag st WHERE st.tag_id = $2 AND sig_tag.sig_id = st.sig_id);
delete from tag where tag_id = $1;

Function: pvs_npatgroup_state(ng_id character varying)

Returns: character varying

Language: PLPGSQL


DECLARE 
state_ids RECORD;
states text;

BEGIN 
states = '';
FOR state_ids IN SELECT state_id FROM npatgroup_state WHERE npatgroup_id = ng_id 
	ORDER BY state_id LOOP   
	states  := states || ', ' || state_ids.state_id;
END LOOP;
RETURN ltrim(states,', ');
END;

Function: pvs_office_committees(oc_id integer)

Returns: character varying

Language: PLPGSQL

 DECLARE names RECORD; committees text; BEGIN committees = ''; FOR names IN SELECT name FROM committee c JOIN committee_candidate cc USING (committee_id) WHERE cc.office_candidate_id = oc_id ORDER BY name LOOP committees := committees || ', ' || names.name; END LOOP; RETURN ltrim(committees,', '); END; 

Function: pvs_office_party(oc_id integer)

Returns: character varying

Language: PLPGSQL

DECLARE names RECORD;parties text;BEGIN parties = '';FOR names IN SELECT name FROM office_candidate_party JOIN party USING (party_id) WHERE office_candidate_id = oc_id ORDER BY rank, name LOOP   parties := parties || ', ' || names.name;END LOOP;RETURN ltrim(parties,', ');END ; 

Function: pvs_process_election_results(integer)

Returns: void

Language: SQL

        UPDATE electionstage_candidate SET electioncandidatestatus_id = 2 WHERE election_candidate_id IN (SELECT election_candidate_id FROM v_election_candidate vc WHERE election_electionstage_id = $1 AND electioncandidatestatus_id NOT IN (9,11,2));
        UPDATE candidate SET release_id = 0 WHERE candidate_id IN (select candidate_id FROM v_election_candidate vc WHERE election_electionstage_id = $1 AND electioncandidatestatus_id NOT IN (9,11) AND NOT EXISTS (SELECT 1 FROM office_candidate oc JOIN candidate ca USING (candidate_id) WHERE oc.candidate_id = vc.candidate_id AND officecandidatestatus_id = 1 AND ca.release_id = 2));
INSERT INTO electionstage_candidate (election_electionstage_id, election_candidate_id, electioncandidatestatus_id) SELECT es.election_electionstage_id, election_candidate_id, 8 FROM v_election_candidate ve JOIN (SELECT e2.election_electionstage_id, e2.election_id, min(e2.electiondate) FROM election_electionstage e1 JOIN election_electionstage e2 ON (e1.election_id = e2.election_id AND e2.electiondate > e1.electiondate) WHERE e1.election_electionstage_id = $1 GROUP BY e2.election_id, e2.election_electionstage_id) es USING (election_id) WHERE ve.election_electionstage_id = $1 AND ve.electioncandidatestatus_id = 11;

Function: pvs_process_npat(integer)

Returns: integer

Language: PLPGSQL

DECLARE
    mynpatform RECORD;
    mynpatrow_id integer;
    mynpatrowtext_id integer;
    myrank integer;
    myoffset integer;
BEGIN
    myrank := 0;
    select nextval('npatmatrix_id_seq') + 1 into myoffset;
    FOR mynpatform in SELECT npatform_def_id, rowtext, rowtype_id, CAST(string_to_array(path, '.') AS INTEGER[]) AS path, wordlimit, profile FROM npatform_def ORDER BY npatform_def_id LOOP
        RAISE NOTICE 'Processing npat form %', mynpatform.npatform_def_id;
        SELECT nrt.npatrowtext_id INTO mynpatrowtext_id FROM npatrowtext nrt WHERE rowtext = mynpatform.rowtext;
        IF NOT FOUND THEN
            INSERT INTO npatrowtext (rowtext) VALUES (mynpatform.rowtext);
            SELECT currval('npatrowtext_id_seq') INTO mynpatrowtext_id;
        END IF;
        SELECT nr.npatrow_id INTO mynpatrow_id FROM npatrow nr WHERE npatrowtype_id = mynpatform.rowtype_id AND npatrowtext_id = mynpatrowtext_id AND wordlimit = mynpatform.wordlimit;
        IF NOT FOUND then
            INSERT INTO npatrow (npatrowtext_id, npatrowtype_id, profile, wordlimit) values (mynpatrowtext_id, mynpatform.rowtype_id, mynpatform.profile, mynpatform.wordlimit);
            SELECT currval('npatrow_id_seq') INTO mynpatrow_id;
        END IF;
        for i in array_lower(mynpatform.path,1)..array_upper(mynpatform.path,1) LOOP
            mynpatform.path[i] := mynpatform.path[i] + myoffset;
        END LOOP;
        insert into npatmatrix (npatform_id, npatrow_id, path, rank) VALUES ($1, mynpatrow_id, text2ltree(array_to_string(mynpatform.path, '.')), myrank);
        myrank := myrank + 1;
    END LOOP;
    RETURN 1;
END;

Function: pvs_speech_deleted()

Returns: trigger

Language: PLPGSQL

BEGIN
delete from speech where speech.speech_id = OLD.speech_id AND NOT EXISTS (select 1 from speech_candidate sc where sc.speech_id = speech.speech_id);
return OLD;
end;

Function: pvs_speech_updated()

Returns: trigger

Language: PLPGSQL

begin
 new.speech_tsv = setweight(to_tsvector('pg_catalog.english', coalesce(new.title,'')), 'A') ||
     setweight(to_tsvector('pg_catalog.english', coalesce(new.speechtext,'')), 'D');
  return new;
end

Function: pvs_submitted()

Returns: trigger

Language: PLPGSQL

BEGIN
if new.submitted then 
UPDATE npatcandidate SET processed = 'f' FROM electionstage_candidate esc WHERE npatcandidate.election_candidate_id = esc.election_candidate_id AND esc.electionstage_candidate_id = NEW.electionstage_candidate_id;
end if;
return NEW;
END;

Function: pvs_thomas_url(character varying, date)

Returns: character varying

Language: SQL

SELECT 'https://www.congress.gov/bill/' || round(((EXTRACT(YEAR FROM $2)::integer+1) -1790)/2)+1 || 'th-congress/' || CASE WHEN $1 ~ '^[Hh]{1}' THEN 'house' ELSE 'senate' END || '-bill/' || translate(lower(regexp_replace($1,' *[0-9]*$','')), ' ', '') || '/text'

Function: pvs_thomas_url(integer)

Returns: character varying

Language: SQL

SELECT 'https://www.congress.gov/bill/' || round(((EXTRACT(YEAR FROM statusdate)::integer+1) -1790)/2)+1 || 'th-congress/' || CASE WHEN billnumber ~ '^[Hh]{1}' THEN 'house' ELSE 'senate' END || '-bill/' || translate(lower(regexp_replace(billnumber,'^[A-Za-z\. ]*','')), ' ', '') || '/text' FROM congress c JOIN congstatus cs USING (congress_id) WHERE cs.congstage_id = 1 AND c.congress_id = $1

Function: pvs_ts_stat()

Returns: void

Language: PLPGSQL

DECLARE
speech_id int;
BEGIN
    FOR speech_id IN SELECT * FROM scratch.speech_thesaurus
    LOOP
        -- can do some processing here
        INSERT INTO scratch.ts_stat (speech_id , nentry, word) SELECT speech_id, nentry, word FROM ts_stat('select speech_tsv FROM speech where speech_id  = ' || speech_id) ORDER BY nentry DESC, word LIMIT 50;
    END LOOP;
    RETURN;
END

Function: pvs_ts_stat_all()

Returns: void

Language: PLPGSQL

 DECLARE
speech_id int;
BEGIN FOR speech_id IN SELECT s.speech_id FROM speechlocking LEFT JOIN scratch.speech_words sc USING (speech_id) WHERE sc.speech_id IS NULL and not committed and accessedby = 'auto'
    LOOP
        -- can do some processing here
        INSERT INTO scratch.ts_stat (speech_id , nentry, word) SELECT speech_id, nentry, word FROM ts_stat('select speech_tsv FROM speech where speech_id  = ' || speech_id)  LEFT JOIN scratch.stopword sp USING (word) WHERE sp.word IS NULL ORDER BY nentry DESC, word LIMIT 50;
    END LOOP;
    RETURN;
END

Function: pvs_ts_stat_category()

Returns: void

Language: PLPGSQL

DECLARE
category_id int;
BEGIN
    FOR category_id IN SELECT * FROM category
    LOOP
        -- can do some processing here
        INSERT INTO scratch.ts_stat_category (category_id , nentry, word) SELECT category_id, nentry, word FROM ts_stat('select speech_tsv FROM speech JOIN speech_category USING (speech_id) where category_id  = ' || category_id) ORDER BY nentry DESC, word LIMIT 200;
    END LOOP;
    RETURN;
END

Function: pvs_update_stat()

Returns: void

Language: SQL

update stat set value = newcount FROM (select count(*) AS newcount FROM candidate c where exists (select 1 FROM v_election_candidate ec where ec.candidate_id = c.candidate_id AND electionyear >= extract(year FROM now())) or exists (select 1 FROM office_candidate oc where oc.candidate_id = c.candidate_id AND officecandidatestatus_id IN (1,3)))new WHERE stat_id = 'C';
update stat set value = newcount FROM (select count(*) AS newcount FROM speech where release_id > 1) new WHERE stat_id = 'S';
update stat set value = newcount FROM (select count(*) as newcount FROM congstatus_candidate cc join congstatus c USING (congstatus_id) WHERE c.release_id > 1) new WHERE stat_id = 'V';
update stat set value = newcount FROM (select count(*) as newcount  FROM rating_candidate join rating using (rating_id) WHERE release_id > 1) new WHERE stat_id = 'R';
 update stat set value = newcount FROM (select count(distinct npatcandidate_id) AS newcount FROM npatanswer) new WHERE stat_id = 'P';
update stat set value = newcount FROM (select sum(dollars) as newcount FROM finance_candidate) new WHERE stat_id = 'F';

Function: raster_above(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry |>> $2::geometry

Function: raster_below(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry <<| $2::geometry

Function: raster_contain(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry ~ $2::geometry

Function: raster_contained(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry @ $2::geometry

Function: raster_contained_by_geometry(public.raster, public.geometry)

Returns: boolean

Language: SQL

select $1::geometry @ $2

Function: raster_eq(public.raster, public.raster)

Returns: boolean

Language: SQL

 SELECT raster_hash($1) = raster_hash($2) 

Function: raster_geometry_contain(public.raster, public.geometry)

Returns: boolean

Language: SQL

select $1::geometry ~ $2

Function: raster_geometry_overlap(public.raster, public.geometry)

Returns: boolean

Language: SQL

select $1::geometry && $2

Function: raster_hash(public.raster)

Returns: integer

Language: INTERNAL

hashvarlena

Function: raster_in(cstring)

Returns: raster

Language: C

RASTER_in

Function: raster_left(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry << $2::geometry

Function: raster_out(public.raster)

Returns: cstring

Language: C

RASTER_out

Function: raster_overabove(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry |&> $2::geometry

Function: raster_overbelow(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry &<| $2::geometry

Function: raster_overlap(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry && $2::geometry

Function: raster_overleft(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry &< $2::geometry

Function: raster_overright(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry &> $2::geometry

Function: raster_right(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry >> $2::geometry

Function: raster_same(public.raster, public.raster)

Returns: boolean

Language: SQL

select $1::geometry ~= $2::geometry

Function: set_limit(real)

Returns: real

Language: C

set_limit

Function: show_limit()

Returns: real

Language: C

show_limit

Function: show_trgm(text)

Returns: text[]

Language: C

show_trgm

Function: similarity(text, text)

Returns: real

Language: C

similarity

Function: similarity_op(text, text)

Returns: boolean

Language: C

similarity_op

Function: slugify(texte character varying)

Returns: character varying

Language: PLPGSQL

DECLARE
    result varchar;
BEGIN
    result := replace(texte , 'æ', 'ae');
    result := replace(result , 'œ', 'oe');
    result := replace(result , '€', 'euros');
    result := replace(result , '$', 'dollars');
    result := replace(result , '£', 'pound');
    result := replace(result , '¥', 'yen');
    result := btrim(
                      regexp_replace(
                        translate(
                                replace(
                                        lower(btrim(result)), 
                                        ' ', 
                                        '-'
                                ),
                                'áàâãäåāăąÁÂÃÄÅĀĂĄèééêëēĕėęěĒĔĖĘĚìíîïìĩīĭÌÍÎÏÌĨĪĬóôõöōŏőÒÓÔÕÖŌŎŐùúûüũūŭůÙÚÛÜŨŪŬŮçÇÿ&,.ñÑ',
                                'aaaaaaaaaaaaaaaaaeeeeeeeeeeeeeeeiiiiiiiiiiiiiiiiooooooooooooooouuuuuuuuuuuuuuuuccy_--nn'
                        ), 
                        E'[^\\w -]', 
                        '', 
                        'g'
                      ),
                      '- '
              );
    RETURN result;
END;

Function: soundex(text)

Returns: text

Language: C

soundex

Function: spheroid_in(cstring)

Returns: spheroid

Language: C

ellipsoid_in

Function: spheroid_out(public.spheroid)

Returns: cstring

Language: C

ellipsoid_out

Function: st_3dclosestpoint(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: g1, g2 - Returns the 3-dimensional point on g1 that is closest to g2. This is the first point of the 3D shortest line.

LWGEOM_closestpoint3d

Function: st_3ddfullywithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: SQL

args: g1, g2, distance - Returns true if all of the 3D geometries are within the specified distance of one another.

SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_3DDFullyWithin($1, $2, $3)

Function: st_3ddistance(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

args: g1, g2 - For geometry type Returns the 3-dimensional cartesian minimum distance (based on spatial ref) between two geometries in projected units.

distance3d

Function: st_3ddwithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: SQL

args: g1, g2, distance_of_srid - For 3d (z) geometry type Returns true if two geometries 3d distance is within number of units.

SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_3DDWithin($1, $2, $3)

Function: st_3dextent(public.geometry)

Returns: box3d

Language: INTERNAL

args: geomfield - an aggregate function that returns the box3D bounding box that bounds rows of geometries.

aggregate_dummy

Function: st_3dintersects(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: geomA, geomB - Returns TRUE if the Geometries "spatially intersect" in 3d - only for points and linestrings

SELECT $1 && $2 AND _ST_3DIntersects($1, $2)

Function: st_3dlength(public.geometry)

Returns: double precision

Language: C

args: a_3dlinestring - Returns the 3-dimensional or 2-dimensional length of the geometry if it is a linestring or multi-linestring.

LWGEOM_length_linestring

Function: st_3dlength_spheroid(public.geometry, public.spheroid)

Returns: double precision

Language: C

args: a_linestring, a_spheroid - Calculates the length of a geometry on an ellipsoid, taking the elevation into account. This is just an alias for ST_Length_Spheroid.

LWGEOM_length_ellipsoid_linestring

Function: st_3dlongestline(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: g1, g2 - Returns the 3-dimensional longest line between two geometries

LWGEOM_longestline3d

Function: st_3dmakebox(geom1 public.geometry, geom2 public.geometry)

Returns: box3d

Language: C

args: point3DLowLeftBottom, point3DUpRightTop - Creates a BOX3D defined by the given 3d point geometries.

BOX3D_construct

Function: st_3dmaxdistance(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

args: g1, g2 - For geometry type Returns the 3-dimensional cartesian maximum distance (based on spatial ref) between two geometries in projected units.

LWGEOM_maxdistance3d

Function: st_3dperimeter(public.geometry)

Returns: double precision

Language: C

args: geomA - Returns the 3-dimensional perimeter of the geometry, if it is a polygon or multi-polygon.

LWGEOM_perimeter_poly

Function: st_3dshortestline(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: g1, g2 - Returns the 3-dimensional shortest line between two geometries

LWGEOM_shortestline3d

Function: st_accum(public.geometry)

Returns: geometry[]

Language: INTERNAL

args: geomfield - Aggregate. Constructs an array of geometries.

aggregate_dummy

Function: st_addband(rast public.raster, addbandargset public.addbandarg[])

Returns: raster

Language: C

args: rast, addbandargset - Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end.

RASTER_addBand

Function: st_addband(rast public.raster, index integer, outdbfile text, outdbindex integer[], nodataval double precision)

Returns: raster

Language: C

args: rast, index, outdbfile, outdbindex, nodataval=NULL - Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end.

RASTER_addBandOutDB

Function: st_addband(rast public.raster, index integer, pixeltype text, initialvalue double precision, nodataval double precision)

Returns: raster

Language: SQL

args: rast, index, pixeltype, initialvalue=0, nodataval=NULL - Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end.

 SELECT st_addband($1, ARRAY[ROW($2, $3, $4, $5)]::addbandarg[]) 

Function: st_addband(rast public.raster, outdbfile text, outdbindex integer[], index integer, nodataval double precision)

Returns: raster

Language: SQL

args: rast, outdbfile, outdbindex, index=at_end, nodataval=NULL - Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end.

 SELECT ST_AddBand($1, $4, $2, $3, $5) 

Function: st_addband(rast public.raster, pixeltype text, initialvalue double precision, nodataval double precision)

Returns: raster

Language: SQL

args: rast, pixeltype, initialvalue=0, nodataval=NULL - Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end.

 SELECT st_addband($1, ARRAY[ROW(NULL, $2, $3, $4)]::addbandarg[]) 

Function: st_addband(torast public.raster, fromrast public.raster, fromband integer, torastindex integer)

Returns: raster

Language: C

args: torast, fromrast, fromband=1, torastindex=at_end - Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end.

RASTER_copyBand

Function: st_addband(torast public.raster, fromrasts public.raster[], fromband integer, torastindex integer)

Returns: raster

Language: C

args: torast, fromrasts, fromband=1, torastindex=at_end - Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end.

RASTER_addBandRasterArray

Function: st_addmeasure(public.geometry, double precision, double precision)

Returns: geometry

Language: C

args: geom_mline, measure_start, measure_end - Return a derived geometry with measure elements linearly interpolated between the start and end points. If the geometry has no measure dimension, one is added. If the geometry has a measure dimension, it is over-written with new values. Only LINESTRINGS and MULTILINESTRINGS are supported.

ST_AddMeasure

Function: st_addpoint(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: linestring, point - Adds a point to a LineString before point <position> (0-based index).

LWGEOM_addpoint

Function: st_addpoint(geom1 public.geometry, geom2 public.geometry, integer)

Returns: geometry

Language: C

args: linestring, point, position - Adds a point to a LineString before point <position> (0-based index).

LWGEOM_addpoint

Function: st_affine(public.geometry, double precision, double precision, double precision, double precision, double precision, double precision)

Returns: geometry

Language: SQL

args: geomA, a, b, d, e, xoff, yoff - Applies a 3d affine transformation to the geometry to do things like translate, rotate, scale in one step.

SELECT ST_Affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)

Function: st_affine(public.geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision)

Returns: geometry

Language: C

args: geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff - Applies a 3d affine transformation to the geometry to do things like translate, rotate, scale in one step.

LWGEOM_affine

Function: st_approxcount(rast public.raster, exclude_nodata_value boolean, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, 1, $2, $3) 

Function: st_approxcount(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, $2, $3, $4) 

Function: st_approxcount(rast public.raster, nband integer, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, $2, TRUE, $3) 

Function: st_approxcount(rast public.raster, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, 1, TRUE, $2) 

Function: st_approxcount(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, $2, 1, $3, $4) 

Function: st_approxcount(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, $2, $3, $4, $5) 

Function: st_approxcount(rastertable text, rastercolumn text, nband integer, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, $2, $3, TRUE, $4) 

Function: st_approxcount(rastertable text, rastercolumn text, sample_percent double precision)

Returns: bigint

Language: SQL

 SELECT _st_count($1, $2, 1, TRUE, $3) 

Function: st_approxhistogram(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision, bins integer, right boolean)

Returns: SET OF record

Language: SQL

 SELECT min, max, count, percent FROM _st_histogram($1, $2, $3, $4, $5, NULL, $6) 

Function: st_approxhistogram(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

 SELECT min, max, count, percent FROM _st_histogram($1, $2, $3, $4, $5, $6, $7) 

Function: st_approxhistogram(rast public.raster, nband integer, sample_percent double precision)

Returns: SET OF record

Language: SQL

 SELECT min, max, count, percent FROM _st_histogram($1, $2, TRUE, $3, 0, NULL, FALSE) 

Function: st_approxhistogram(rast public.raster, nband integer, sample_percent double precision, bins integer, right boolean)

Returns: SET OF record

Language: SQL

 SELECT min, max, count, percent FROM _st_histogram($1, $2, TRUE, $3, $4, NULL, $5) 

Function: st_approxhistogram(rast public.raster, nband integer, sample_percent double precision, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

 SELECT min, max, count, percent FROM _st_histogram($1, $2, TRUE, $3, $4, $5, $6) 

Function: st_approxhistogram(rast public.raster, sample_percent double precision)

Returns: SET OF record

Language: SQL

 SELECT min, max, count, percent FROM _st_histogram($1, 1, TRUE, $2, 0, NULL, FALSE) 

Function: st_approxhistogram(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision, bins integer, right boolean)

Returns: SET OF record

Language: SQL

 SELECT _st_histogram($1, $2, $3, $4, $5, $6, NULL, $7) 

Function: st_approxhistogram(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

 SELECT _st_histogram($1, $2, $3, $4, $5, $6, $7, $8) 

Function: st_approxhistogram(rastertable text, rastercolumn text, nband integer, sample_percent double precision)

Returns: SET OF record

Language: SQL

 SELECT _st_histogram($1, $2, $3, TRUE, $4, 0, NULL, FALSE) 

Function: st_approxhistogram(rastertable text, rastercolumn text, nband integer, sample_percent double precision, bins integer, right boolean)

Returns: SET OF record

Language: SQL

 SELECT _st_histogram($1, $2, $3, TRUE, $4, $5, NULL, $6) 

Function: st_approxhistogram(rastertable text, rastercolumn text, nband integer, sample_percent double precision, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

 SELECT _st_histogram($1, $2, $3, TRUE, $4, $5, $6, $7) 

Function: st_approxhistogram(rastertable text, rastercolumn text, sample_percent double precision)

Returns: SET OF record

Language: SQL

 SELECT _st_histogram($1, $2, 1, TRUE, $3, 0, NULL, FALSE) 

Function: st_approxquantile(rast public.raster, exclude_nodata_value boolean, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, 1, $2, 0.1, ARRAY[$3]::double precision[])).value 

Function: st_approxquantile(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, $3, $4, ARRAY[$5]::double precision[])).value 

Function: st_approxquantile(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, $2, $3, $4, $5) 

Function: st_approxquantile(rast public.raster, nband integer, sample_percent double precision, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, TRUE, $3, ARRAY[$4]::double precision[])).value 

Function: st_approxquantile(rast public.raster, nband integer, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, $2, TRUE, $3, $4) 

Function: st_approxquantile(rast public.raster, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, 1, TRUE, 0.1, ARRAY[$2]::double precision[])).value 

Function: st_approxquantile(rast public.raster, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, 1, TRUE, 0.1, $2) 

Function: st_approxquantile(rast public.raster, sample_percent double precision, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, 1, TRUE, $2, ARRAY[$3]::double precision[])).value 

Function: st_approxquantile(rast public.raster, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, 1, TRUE, $2, $3) 

Function: st_approxquantile(rastertable text, rastercolumn text, exclude_nodata_value boolean, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, 1, $3, 0.1, ARRAY[$4]::double precision[])).value 

Function: st_approxquantile(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, $3, $4, $5, ARRAY[$6]::double precision[])).value 

Function: st_approxquantile(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, $2, $3, $4, $5, $6) 

Function: st_approxquantile(rastertable text, rastercolumn text, nband integer, sample_percent double precision, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, $3, TRUE, $4, ARRAY[$5]::double precision[])).value 

Function: st_approxquantile(rastertable text, rastercolumn text, nband integer, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, $2, $3, TRUE, $4, $5) 

Function: st_approxquantile(rastertable text, rastercolumn text, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, 1, TRUE, 0.1, ARRAY[$3]::double precision[])).value 

Function: st_approxquantile(rastertable text, rastercolumn text, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, $2, 1, TRUE, 0.1, $3) 

Function: st_approxquantile(rastertable text, rastercolumn text, sample_percent double precision, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, 1, TRUE, $3, ARRAY[$4]::double precision[])).value 

Function: st_approxquantile(rastertable text, rastercolumn text, sample_percent double precision, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, $2, 1, TRUE, $3, $4) 

Function: st_approxsummarystats(rast public.raster, exclude_nodata_value boolean, sample_percent double precision)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, 1, $2, $3) 

Function: st_approxsummarystats(rast public.raster, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, $2, $3, $4) 

Function: st_approxsummarystats(rast public.raster, nband integer, sample_percent double precision)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, $2, TRUE, $3) 

Function: st_approxsummarystats(rast public.raster, sample_percent double precision)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, 1, TRUE, $2) 

Function: st_approxsummarystats(rastertable text, rastercolumn text, exclude_nodata_value boolean)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, $2, 1, $3, 0.1) 

Function: st_approxsummarystats(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, sample_percent double precision)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, $2, $3, $4, $5) 

Function: st_approxsummarystats(rastertable text, rastercolumn text, nband integer, sample_percent double precision)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, $2, $3, TRUE, $4) 

Function: st_approxsummarystats(rastertable text, rastercolumn text, sample_percent double precision)

Returns: record

Language: SQL

 SELECT _st_summarystats($1, $2, 1, TRUE, $3) 

Function: st_area(geog public.geography, use_spheroid boolean)

Returns: double precision

Language: C

args: geog, use_spheroid=true - Returns the area of the surface if it is a polygon or multi-polygon. For "geometry" type area is in SRID units. For "geography" area is in square meters.

geography_area

Function: st_area(public.geometry)

Returns: double precision

Language: C

args: g1 - Returns the area of the surface if it is a polygon or multi-polygon. For "geometry" type area is in SRID units. For "geography" area is in square meters.

area

Function: st_area(text)

Returns: double precision

Language: SQL

 SELECT ST_Area($1::geometry);  

Function: st_area2d(public.geometry)

Returns: double precision

Language: C

LWGEOM_area_polygon

Function: st_asbinary( public.raster, outasin boolean)

Returns: bytea

Language: C

args: rast, outasin=FALSE - Return the Well-Known Binary (WKB) representation of the raster without SRID meta data.

RASTER_to_binary

Function: st_asbinary(public.geography)

Returns: bytea

Language: C

args: g1 - Return the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data.

LWGEOM_asBinary

Function: st_asbinary(public.geography, text)

Returns: bytea

Language: SQL

args: g1, NDR_or_XDR - Return the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data.

 SELECT ST_AsBinary($1::geometry, $2);  

Function: st_asbinary(public.geometry)

Returns: bytea

Language: C

args: g1 - Return the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data.

LWGEOM_asBinary

Function: st_asbinary(public.geometry, text)

Returns: bytea

Language: C

args: g1, NDR_or_XDR - Return the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data.

LWGEOM_asBinary

Function: st_asewkb(public.geometry)

Returns: bytea

Language: C

args: g1 - Return the Well-Known Binary (WKB) representation of the geometry with SRID meta data.

WKBFromLWGEOM

Function: st_asewkb(public.geometry, text)

Returns: bytea

Language: C

args: g1, NDR_or_XDR - Return the Well-Known Binary (WKB) representation of the geometry with SRID meta data.

WKBFromLWGEOM

Function: st_asewkt(public.geography)

Returns: text

Language: C

args: g1 - Return the Well-Known Text (WKT) representation of the geometry with SRID meta data.

LWGEOM_asEWKT

Function: st_asewkt(public.geometry)

Returns: text

Language: C

args: g1 - Return the Well-Known Text (WKT) representation of the geometry with SRID meta data.

LWGEOM_asEWKT

Function: st_asewkt(text)

Returns: text

Language: SQL

 SELECT ST_AsEWKT($1::geometry);  

Function: st_asgdalraster(rast public.raster, format text, options text[], srid integer)

Returns: bytea

Language: C

args: rast, format, options=NULL, srid=sameassource - Return the raster tile in the designated GDAL Raster format. Raster formats are one of those supported by your compiled library. Use ST_GDALRasters() to get a list of formats supported by your library.

RASTER_asGDALRaster

Function: st_asgeojson(geog public.geography, maxdecimaldigits integer, options integer)

Returns: text

Language: SQL

args: geog, maxdecimaldigits=15, options=0 - Return the geometry as a GeoJSON element.

 SELECT _ST_AsGeoJson(1, $1, $2, $3); 

Function: st_asgeojson(geom public.geometry, maxdecimaldigits integer, options integer)

Returns: text

Language: SQL

args: geom, maxdecimaldigits=15, options=0 - Return the geometry as a GeoJSON element.

 SELECT _ST_AsGeoJson(1, $1, $2, $3); 

Function: st_asgeojson(gj_version integer, geog public.geography, maxdecimaldigits integer, options integer)

Returns: text

Language: SQL

args: gj_version, geog, maxdecimaldigits=15, options=0 - Return the geometry as a GeoJSON element.

 SELECT _ST_AsGeoJson($1, $2, $3, $4); 

Function: st_asgeojson(gj_version integer, geom public.geometry, maxdecimaldigits integer, options integer)

Returns: text

Language: SQL

args: gj_version, geom, maxdecimaldigits=15, options=0 - Return the geometry as a GeoJSON element.

 SELECT _ST_AsGeoJson($1, $2, $3, $4); 

Function: st_asgeojson(text)

Returns: text

Language: SQL

 SELECT _ST_AsGeoJson(1, $1::geometry,15,0);  

Function: st_asgml(geog public.geography, maxdecimaldigits integer, options integer)

Returns: text

Language: SQL

args: geog, maxdecimaldigits=15, options=0 - Return the geometry as a GML version 2 or 3 element.

SELECT _ST_AsGML(2, $1, $2, $3, null, null)

Function: st_asgml(geom public.geometry, maxdecimaldigits integer, options integer)

Returns: text

Language: SQL

args: geom, maxdecimaldigits=15, options=0 - Return the geometry as a GML version 2 or 3 element.

 SELECT _ST_AsGML(2, $1, $2, $3, null, null); 

Function: st_asgml(text)

Returns: text

Language: SQL

 SELECT _ST_AsGML(2,$1::geometry,15,0, NULL, NULL);  

Function: st_asgml(version integer, geog public.geography, maxdecimaldigits integer, options integer, nprefix text, id text)

Returns: text

Language: SQL

args: version, geog, maxdecimaldigits=15, options=0, nprefix=null, id=null - Return the geometry as a GML version 2 or 3 element.

 SELECT _ST_AsGML($1, $2, $3, $4, $5, $6);

Function: st_asgml(version integer, geom public.geometry, maxdecimaldigits integer, options integer, nprefix text, id text)

Returns: text

Language: SQL

args: version, geom, maxdecimaldigits=15, options=0, nprefix=null, id=null - Return the geometry as a GML version 2 or 3 element.

 SELECT _ST_AsGML($1, $2, $3, $4, $5, $6); 

Function: st_ashexewkb(public.geometry)

Returns: text

Language: C

args: g1 - Returns a Geometry in HEXEWKB format (as text) using either little-endian (NDR) or big-endian (XDR) encoding.

LWGEOM_asHEXEWKB

Function: st_ashexewkb(public.geometry, text)

Returns: text

Language: C

args: g1, NDRorXDR - Returns a Geometry in HEXEWKB format (as text) using either little-endian (NDR) or big-endian (XDR) encoding.

LWGEOM_asHEXEWKB

Function: st_asjpeg(rast public.raster, nband integer, options text[])

Returns: bytea

Language: SQL

args: rast, nband, options=NULL - Return the raster tile selected bands as a single Joint Photographic Exports Group (JPEG) image (byte array). If no band is specified and 1 or more than 3 bands, then only the first band is used. If only 3 bands then all 3 bands are used and mapped to RGB.

 SELECT st_asjpeg(st_band($1, $2), $3) 

Function: st_asjpeg(rast public.raster, nband integer, quality integer)

Returns: bytea

Language: SQL

args: rast, nband, quality - Return the raster tile selected bands as a single Joint Photographic Exports Group (JPEG) image (byte array). If no band is specified and 1 or more than 3 bands, then only the first band is used. If only 3 bands then all 3 bands are used and mapped to RGB.

 SELECT st_asjpeg($1, ARRAY[$2], $3) 

Function: st_asjpeg(rast public.raster, nbands integer[], options text[])

Returns: bytea

Language: SQL

args: rast, nbands, options=NULL - Return the raster tile selected bands as a single Joint Photographic Exports Group (JPEG) image (byte array). If no band is specified and 1 or more than 3 bands, then only the first band is used. If only 3 bands then all 3 bands are used and mapped to RGB.

 SELECT st_asjpeg(st_band($1, $2), $3) 

Function: st_asjpeg(rast public.raster, nbands integer[], quality integer)

Returns: bytea

Language: PLPGSQL

args: rast, nbands, quality - Return the raster tile selected bands as a single Joint Photographic Exports Group (JPEG) image (byte array). If no band is specified and 1 or more than 3 bands, then only the first band is used. If only 3 bands then all 3 bands are used and mapped to RGB.

	DECLARE
		quality2 int;
		options text[];
	BEGIN
		IF quality IS NOT NULL THEN
			IF quality > 100 THEN
				quality2 := 100;
			ELSEIF quality < 10 THEN
				quality2 := 10;
			ELSE
				quality2 := quality;
			END IF;

			options := array_append(options, 'QUALITY=' || quality2);
		END IF;

		RETURN st_asjpeg(st_band($1, $2), options);
	END;
	

Function: st_asjpeg(rast public.raster, options text[])

Returns: bytea

Language: PLPGSQL

args: rast, options=NULL - Return the raster tile selected bands as a single Joint Photographic Exports Group (JPEG) image (byte array). If no band is specified and 1 or more than 3 bands, then only the first band is used. If only 3 bands then all 3 bands are used and mapped to RGB.

	DECLARE
		rast2 raster;
		num_bands int;
		i int;
	BEGIN
		IF rast IS NULL THEN
			RETURN NULL;
		END IF;

		num_bands := st_numbands($1);

		-- JPEG allows 1 or 3 bands
		IF num_bands <> 1 AND num_bands <> 3 THEN
			RAISE NOTICE 'The JPEG format only permits one or three bands.  The first band will be used.';
			rast2 := st_band(rast, ARRAY[1]);
			num_bands := st_numbands(rast);
		ELSE
			rast2 := rast;
		END IF;

		-- JPEG only supports 8BUI pixeltype
		FOR i IN 1..num_bands LOOP
			IF st_bandpixeltype(rast, i) != '8BUI' THEN
				RAISE EXCEPTION 'The pixel type of band % in the raster is not 8BUI.  The JPEG format can only be used with the 8BUI pixel type.', i;
			END IF;
		END LOOP;

		RETURN st_asgdalraster(rast2, 'JPEG', $2, NULL);
	END;
	

Function: st_askml(geog public.geography, maxdecimaldigits integer)

Returns: text

Language: SQL

args: geog, maxdecimaldigits=15 - Return the geometry as a KML element. Several variants. Default version=2, default precision=15

SELECT _ST_AsKML(2, $1, $2, null)

Function: st_askml(geom public.geometry, maxdecimaldigits integer)

Returns: text

Language: SQL

args: geom, maxdecimaldigits=15 - Return the geometry as a KML element. Several variants. Default version=2, default precision=15

 SELECT _ST_AsKML(2, ST_Transform($1,4326), $2, null); 

Function: st_askml(text)

Returns: text

Language: SQL

 SELECT _ST_AsKML(2, $1::geometry, 15, null);  

Function: st_askml(version integer, geog public.geography, maxdecimaldigits integer, nprefix text)

Returns: text

Language: SQL

args: version, geog, maxdecimaldigits=15, nprefix=NULL - Return the geometry as a KML element. Several variants. Default version=2, default precision=15

SELECT _ST_AsKML($1, $2, $3, $4)

Function: st_askml(version integer, geom public.geometry, maxdecimaldigits integer, nprefix text)

Returns: text

Language: SQL

args: version, geom, maxdecimaldigits=15, nprefix=NULL - Return the geometry as a KML element. Several variants. Default version=2, default precision=15

 SELECT _ST_AsKML($1, ST_Transform($2,4326), $3, $4); 

Function: st_aslatlontext(public.geometry)

Returns: text

Language: SQL

args: pt - Return the Degrees, Minutes, Seconds representation of the given point.

 SELECT ST_AsLatLonText($1, '') 

Function: st_aslatlontext(public.geometry, text)

Returns: text

Language: C

args: pt, format - Return the Degrees, Minutes, Seconds representation of the given point.

LWGEOM_to_latlon

Function: st_aspect(rast public.raster, nband integer, customextent public.raster, pixeltype text, units text, interpolate_nodata boolean)

Returns: raster

Language: PLPGSQL

	DECLARE
		_rast raster;
		_nband integer;
		_pixtype text;
		_width integer;
		_height integer;
		_customextent raster;
		_extenttype text;
	BEGIN
		_customextent := customextent;
		IF _customextent IS NULL THEN
			_extenttype := 'FIRST';
		ELSE
			_extenttype := 'CUSTOM';
		END IF;

		IF interpolate_nodata IS TRUE THEN
			_rast := ST_MapAlgebra(
				ARRAY[ROW(rast, nband)]::rastbandarg[],
				'st_invdistweight4ma(double precision[][][], integer[][], text[])'::regprocedure,
				pixeltype,
				'FIRST', NULL,
				1, 1
			);
			_nband := 1;
			_pixtype := NULL;
		ELSE
			_rast := rast;
			_nband := nband;
			_pixtype := pixeltype;
		END IF;

		-- get properties
		SELECT width, height INTO _width, _height FROM ST_Metadata(_rast);

		RETURN ST_MapAlgebra(
			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
			'_st_aspect4ma(double precision[][][], integer[][], text[])'::regprocedure,
			_pixtype,
			_extenttype, _customextent,
			1, 1,
			_width::text, _height::text,
			units::text
		);
	END;
	

Function: st_aspect(rast public.raster, nband integer, pixeltype text, units text, interpolate_nodata boolean)

Returns: raster

Language: SQL

 SELECT st_aspect($1, $2, NULL::raster, $3, $4, $5) 

Function: st_aspng(rast public.raster, nband integer, compression integer)

Returns: bytea

Language: SQL

args: rast, nband, compression - Return the raster tile selected bands as a single portable network graphics (PNG) image (byte array). If 1, 3, or 4 bands in raster and no bands are specified, then all bands are used. If more 2 or more than 4 bands and no bands specified, then only band 1 is used. Bands are mapped to RGB or RGBA space.

 SELECT st_aspng($1, ARRAY[$2], $3) 

Function: st_aspng(rast public.raster, nband integer, options text[])

Returns: bytea

Language: SQL

args: rast, nband, options=NULL - Return the raster tile selected bands as a single portable network graphics (PNG) image (byte array). If 1, 3, or 4 bands in raster and no bands are specified, then all bands are used. If more 2 or more than 4 bands and no bands specified, then only band 1 is used. Bands are mapped to RGB or RGBA space.

 SELECT st_aspng(st_band($1, $2), $3) 

Function: st_aspng(rast public.raster, nbands integer[], compression integer)

Returns: bytea

Language: PLPGSQL

args: rast, nbands, compression - Return the raster tile selected bands as a single portable network graphics (PNG) image (byte array). If 1, 3, or 4 bands in raster and no bands are specified, then all bands are used. If more 2 or more than 4 bands and no bands specified, then only band 1 is used. Bands are mapped to RGB or RGBA space.

	DECLARE
		compression2 int;
		options text[];
	BEGIN
		IF compression IS NOT NULL THEN
			IF compression > 9 THEN
				compression2 := 9;
			ELSEIF compression < 1 THEN
				compression2 := 1;
			ELSE
				compression2 := compression;
			END IF;

			options := array_append(options, 'ZLEVEL=' || compression2);
		END IF;

		RETURN st_aspng(st_band($1, $2), options);
	END;
	

Function: st_aspng(rast public.raster, nbands integer[], options text[])

Returns: bytea

Language: SQL

args: rast, nbands, options=NULL - Return the raster tile selected bands as a single portable network graphics (PNG) image (byte array). If 1, 3, or 4 bands in raster and no bands are specified, then all bands are used. If more 2 or more than 4 bands and no bands specified, then only band 1 is used. Bands are mapped to RGB or RGBA space.

 SELECT st_aspng(st_band($1, $2), $3) 

Function: st_aspng(rast public.raster, options text[])

Returns: bytea

Language: PLPGSQL

args: rast, options=NULL - Return the raster tile selected bands as a single portable network graphics (PNG) image (byte array). If 1, 3, or 4 bands in raster and no bands are specified, then all bands are used. If more 2 or more than 4 bands and no bands specified, then only band 1 is used. Bands are mapped to RGB or RGBA space.

	DECLARE
		rast2 raster;
		num_bands int;
		i int;
		pt text;
	BEGIN
		IF rast IS NULL THEN
			RETURN NULL;
		END IF;

		num_bands := st_numbands($1);

		-- PNG allows 1, 3 or 4 bands
		IF num_bands <> 1 AND num_bands <> 3 AND num_bands <> 4 THEN
			RAISE NOTICE 'The PNG format only permits one, three or four bands.  The first band will be used.';
			rast2 := st_band($1, ARRAY[1]);
			num_bands := st_numbands(rast2);
		ELSE
			rast2 := rast;
		END IF;

		-- PNG only supports 8BUI and 16BUI pixeltype
		FOR i IN 1..num_bands LOOP
			pt = st_bandpixeltype(rast, i);
			IF pt != '8BUI' AND pt != '16BUI' THEN
				RAISE EXCEPTION 'The pixel type of band % in the raster is not 8BUI or 16BUI.  The PNG format can only be used with 8BUI and 16BUI pixel types.', i;
			END IF;
		END LOOP;

		RETURN st_asgdalraster(rast2, 'PNG', $2, NULL);
	END;
	

Function: st_asraster(geom public.geometry, ref public.raster, pixeltype text, value double precision, nodataval double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, ref, pixeltype, value=1, nodataval=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT st_asraster($1, $2, ARRAY[$3]::text[], ARRAY[$4]::double precision[], ARRAY[$5]::double precision[], $6) 

Function: st_asraster(geom public.geometry, ref public.raster, pixeltype text[], value double precision[], nodataval double precision[], touched boolean)

Returns: raster

Language: PLPGSQL

args: geom, ref, pixeltype=ARRAY['8BUI'], value=ARRAY[1], nodataval=ARRAY[0], touched=false - Converts a PostGIS geometry to a PostGIS raster.

	DECLARE
		g geometry;
		g_srid integer;

		ul_x double precision;
		ul_y double precision;
		scale_x double precision;
		scale_y double precision;
		skew_x double precision;
		skew_y double precision;
		sr_id integer;
	BEGIN
		SELECT upperleftx, upperlefty, scalex, scaley, skewx, skewy, srid INTO ul_x, ul_y, scale_x, scale_y, skew_x, skew_y, sr_id FROM ST_Metadata(ref);
		--RAISE NOTICE '%, %, %, %, %, %, %', ul_x, ul_y, scale_x, scale_y, skew_x, skew_y, sr_id;

		-- geometry and raster has different SRID
		g_srid := ST_SRID(geom);
		IF g_srid != sr_id THEN
			RAISE NOTICE 'The geometry''s SRID (%) is not the same as the raster''s SRID (%).  The geometry will be transformed to the raster''s projection', g_srid, sr_id;
			g := ST_Transform(geom, sr_id);
		ELSE
			g := geom;
		END IF;

		RETURN _st_asraster(g, scale_x, scale_y, NULL, NULL, $3, $4, $5, NULL, NULL, ul_x, ul_y, skew_x, skew_y, $6);
	END;
	

Function: st_asraster(geom public.geometry, scalex double precision, scaley double precision, gridx double precision, gridy double precision, pixeltype text, value double precision, nodataval double precision, skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, scalex, scaley, gridx, gridy, pixeltype, value=1, nodataval=0, skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, $2, $3, NULL, NULL, ARRAY[$6]::text[], ARRAY[$7]::double precision[], ARRAY[$8]::double precision[], NULL, NULL, $4, $5, $9, $10, $11) 

Function: st_asraster(geom public.geometry, scalex double precision, scaley double precision, gridx double precision, gridy double precision, pixeltype text[], value double precision[], nodataval double precision[], skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, scalex, scaley, gridx=NULL, gridy=NULL, pixeltype=ARRAY['8BUI'], value=ARRAY[1], nodataval=ARRAY[0], skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, $2, $3, NULL, NULL, $6, $7, $8, NULL, NULL, $4, $5, $9, $10, $11) 

Function: st_asraster(geom public.geometry, scalex double precision, scaley double precision, pixeltype text, value double precision, nodataval double precision, upperleftx double precision, upperlefty double precision, skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, scalex, scaley, pixeltype, value=1, nodataval=0, upperleftx=NULL, upperlefty=NULL, skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, $2, $3, NULL, NULL, ARRAY[$4]::text[], ARRAY[$5]::double precision[], ARRAY[$6]::double precision[], $7, $8, NULL, NULL, $9, $10, $11) 

Function: st_asraster(geom public.geometry, scalex double precision, scaley double precision, pixeltype text[], value double precision[], nodataval double precision[], upperleftx double precision, upperlefty double precision, skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, scalex, scaley, pixeltype, value=ARRAY[1], nodataval=ARRAY[0], upperleftx=NULL, upperlefty=NULL, skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, $2, $3, NULL, NULL, $4, $5, $6, $7, $8, NULL, NULL,	$9, $10, $11) 

Function: st_asraster(geom public.geometry, width integer, height integer, gridx double precision, gridy double precision, pixeltype text, value double precision, nodataval double precision, skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, width, height, gridx, gridy, pixeltype, value=1, nodataval=0, skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, NULL, NULL, $2, $3, ARRAY[$6]::text[], ARRAY[$7]::double precision[], ARRAY[$8]::double precision[], NULL, NULL, $4, $5, $9, $10, $11) 

Function: st_asraster(geom public.geometry, width integer, height integer, gridx double precision, gridy double precision, pixeltype text[], value double precision[], nodataval double precision[], skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, width, height, gridx=NULL, gridy=NULL, pixeltype=ARRAY['8BUI'], value=ARRAY[1], nodataval=ARRAY[0], skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, NULL, NULL, $2, $3, $6, $7, $8, NULL, NULL, $4, $5, $9, $10, $11) 

Function: st_asraster(geom public.geometry, width integer, height integer, pixeltype text, value double precision, nodataval double precision, upperleftx double precision, upperlefty double precision, skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, width, height, pixeltype, value=1, nodataval=0, upperleftx=NULL, upperlefty=NULL, skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, NULL, NULL, $2, $3, ARRAY[$4]::text[], ARRAY[$5]::double precision[], ARRAY[$6]::double precision[], $7, $8, NULL, NULL,$9, $10, $11) 

Function: st_asraster(geom public.geometry, width integer, height integer, pixeltype text[], value double precision[], nodataval double precision[], upperleftx double precision, upperlefty double precision, skewx double precision, skewy double precision, touched boolean)

Returns: raster

Language: SQL

args: geom, width, height, pixeltype, value=ARRAY[1], nodataval=ARRAY[0], upperleftx=NULL, upperlefty=NULL, skewx=0, skewy=0, touched=false - Converts a PostGIS geometry to a PostGIS raster.

 SELECT _st_asraster($1, NULL, NULL, $2, $3, $4, $5, $6, $7, $8, NULL, NULL,	$9, $10, $11) 

Function: st_assvg(geog public.geography, rel integer, maxdecimaldigits integer)

Returns: text

Language: C

args: geog, rel=0, maxdecimaldigits=15 - Returns a Geometry in SVG path data given a geometry or geography object.

geography_as_svg

Function: st_assvg(geom public.geometry, rel integer, maxdecimaldigits integer)

Returns: text

Language: C

args: geom, rel=0, maxdecimaldigits=15 - Returns a Geometry in SVG path data given a geometry or geography object.

LWGEOM_asSVG

Function: st_assvg(text)

Returns: text

Language: SQL

 SELECT ST_AsSVG($1::geometry,0,15);  

Function: st_astext(public.geography)

Returns: text

Language: C

args: g1 - Return the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata.

LWGEOM_asText

Function: st_astext(public.geometry)

Returns: text

Language: C

args: g1 - Return the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata.

LWGEOM_asText

Function: st_astext(text)

Returns: text

Language: SQL

 SELECT ST_AsText($1::geometry);  

Function: st_astiff(rast public.raster, compression text, srid integer)

Returns: bytea

Language: PLPGSQL

args: rast, compression=', srid=sameassource - Return the raster selected bands as a single TIFF image (byte array). If no band is specified, then will try to use all bands.

	DECLARE
		compression2 text;
		c_type text;
		c_level int;
		i int;
		num_bands int;
		options text[];
	BEGIN
		IF rast IS NULL THEN
			RETURN NULL;
		END IF;

		compression2 := trim(both from upper(compression));

		IF length(compression2) > 0 THEN
			-- JPEG
			IF position('JPEG' in compression2) != 0 THEN
				c_type := 'JPEG';
				c_level := substring(compression2 from '[0-9]+$');

				IF c_level IS NOT NULL THEN
					IF c_level > 100 THEN
						c_level := 100;
					ELSEIF c_level < 1 THEN
						c_level := 1;
					END IF;

					options := array_append(options, 'JPEG_QUALITY=' || c_level);
				END IF;

				-- per band pixel type check
				num_bands := st_numbands($1);
				FOR i IN 1..num_bands LOOP
					IF st_bandpixeltype($1, i) != '8BUI' THEN
						RAISE EXCEPTION 'The pixel type of band % in the raster is not 8BUI.  JPEG compression can only be used with the 8BUI pixel type.', i;
					END IF;
				END LOOP;

			-- DEFLATE
			ELSEIF position('DEFLATE' in compression2) != 0 THEN
				c_type := 'DEFLATE';
				c_level := substring(compression2 from '[0-9]+$');

				IF c_level IS NOT NULL THEN
					IF c_level > 9 THEN
						c_level := 9;
					ELSEIF c_level < 1 THEN
						c_level := 1;
					END IF;

					options := array_append(options, 'ZLEVEL=' || c_level);
				END IF;

			ELSE
				c_type := compression2;

				-- CCITT
				IF position('CCITT' in compression2) THEN
					-- per band pixel type check
					num_bands := st_numbands($1);
					FOR i IN 1..num_bands LOOP
						IF st_bandpixeltype($1, i) != '1BB' THEN
							RAISE EXCEPTION 'The pixel type of band % in the raster is not 1BB.  CCITT compression can only be used with the 1BB pixel type.', i;
						END IF;
					END LOOP;
				END IF;

			END IF;

			-- compression type check
			IF ARRAY[c_type] <@ ARRAY['JPEG', 'LZW', 'PACKBITS', 'DEFLATE', 'CCITTRLE', 'CCITTFAX3', 'CCITTFAX4', 'NONE'] THEN
				options := array_append(options, 'COMPRESS=' || c_type);
			ELSE
				RAISE NOTICE 'Unknown compression type: %.  The outputted TIFF will not be COMPRESSED.', c_type;
			END IF;
		END IF;

		RETURN st_astiff($1, options, $3);
	END;
	

Function: st_astiff(rast public.raster, nbands integer[], compression text, srid integer)

Returns: bytea

Language: SQL

args: rast, nbands, compression=', srid=sameassource - Return the raster selected bands as a single TIFF image (byte array). If no band is specified, then will try to use all bands.

 SELECT st_astiff(st_band($1, $2), $3, $4) 

Function: st_astiff(rast public.raster, nbands integer[], options text[], srid integer)

Returns: bytea

Language: SQL

args: rast, nbands, options, srid=sameassource - Return the raster selected bands as a single TIFF image (byte array). If no band is specified, then will try to use all bands.

 SELECT st_astiff(st_band($1, $2), $3, $4) 

Function: st_astiff(rast public.raster, options text[], srid integer)

Returns: bytea

Language: PLPGSQL

args: rast, options=', srid=sameassource - Return the raster selected bands as a single TIFF image (byte array). If no band is specified, then will try to use all bands.

	DECLARE
		i int;
		num_bands int;
		nodata double precision;
		last_nodata double precision;
	BEGIN
		IF rast IS NULL THEN
			RETURN NULL;
		END IF;

		num_bands := st_numbands($1);

		-- TIFF only allows one NODATA value for ALL bands
		FOR i IN 1..num_bands LOOP
			nodata := st_bandnodatavalue($1, i);
			IF last_nodata IS NULL THEN
				last_nodata := nodata;
			ELSEIF nodata != last_nodata THEN
				RAISE NOTICE 'The TIFF format only permits one NODATA value for all bands.  The value used will be the last band with a NODATA value.';
			END IF;
		END LOOP;

		RETURN st_asgdalraster($1, 'GTiff', $2, $3);
	END;
	

Function: st_asx3d(geom public.geometry, maxdecimaldigits integer, options integer)

Returns: text

Language: SQL

args: g1, maxdecimaldigits=15, options=0 - Returns a Geometry in X3D xml node element format: ISO-IEC-19776-1.2-X3DEncodings-XML

SELECT _ST_AsX3D(3,$1,$2,$3,'');

Function: st_azimuth(geog1 public.geography, geog2 public.geography)

Returns: double precision

Language: C

args: pointA, pointB - Returns the north-based azimuth as the angle in radians measured clockwise from the vertical on pointA to pointB.

geography_azimuth

Function: st_azimuth(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

args: pointA, pointB - Returns the north-based azimuth as the angle in radians measured clockwise from the vertical on pointA to pointB.

LWGEOM_azimuth

Function: st_band(rast public.raster, nband integer)

Returns: raster

Language: SQL

args: rast, nband - Returns one or more bands of an existing raster as a new raster. Useful for building new rasters from existing rasters.

 SELECT st_band($1, ARRAY[$2]) 

Function: st_band(rast public.raster, nbands integer[])

Returns: raster

Language: C

args: rast, nbands = ARRAY[1] - Returns one or more bands of an existing raster as a new raster. Useful for building new rasters from existing rasters.

RASTER_band

Function: st_band(rast public.raster, nbands text, delimiter bpchar)

Returns: raster

Language: SQL

args: rast, nbands, delimiter=, - Returns one or more bands of an existing raster as a new raster. Useful for building new rasters from existing rasters.

 SELECT st_band($1, regexp_split_to_array(regexp_replace($2, '[[:space:]]', '', 'g'), E'\\' || array_to_string(regexp_split_to_array($3, ''), E'\\'))::int[]) 

Function: st_bandisnodata(rast public.raster, band integer, forcechecking boolean)

Returns: boolean

Language: C

args: rast, band, forceChecking=true - Returns true if the band is filled with only nodata values.

RASTER_bandIsNoData

Function: st_bandisnodata(rast public.raster, forcechecking boolean)

Returns: boolean

Language: SQL

args: rast, forceChecking=true - Returns true if the band is filled with only nodata values.

 SELECT st_bandisnodata($1, 1, $2) 

Function: st_bandmetadata(rast public.raster, band integer)

Returns: record

Language: SQL

args: rast, bandnum=1 - Returns basic meta data for a specific raster band. band num 1 is assumed if none-specified.

 SELECT pixeltype, nodatavalue, isoutdb, path FROM st_bandmetadata($1, ARRAY[$2]::int[]) LIMIT 1 

Function: st_bandmetadata(rast public.raster, band integer[])

Returns: record

Language: C

RASTER_bandmetadata

Function: st_bandnodatavalue(rast public.raster, band integer)

Returns: double precision

Language: C

args: rast, bandnum=1 - Returns the value in a given band that represents no data. If no band num 1 is assumed.

RASTER_getBandNoDataValue

Function: st_bandpath(rast public.raster, band integer)

Returns: text

Language: C

args: rast, bandnum=1 - Returns system file path to a band stored in file system. If no bandnum specified, 1 is assumed.

RASTER_getBandPath

Function: st_bandpixeltype(rast public.raster, band integer)

Returns: text

Language: C

args: rast, bandnum=1 - Returns the type of pixel for given band. If no bandnum specified, 1 is assumed.

RASTER_getBandPixelTypeName

Function: st_bdmpolyfromtext(text, integer)

Returns: geometry

Language: PLPGSQL

args: WKT, srid - Construct a MultiPolygon given an arbitrary collection of closed linestrings as a MultiLineString text representation Well-Known text representation.

DECLARE
	geomtext alias for $1;
	srid alias for $2;
	mline geometry;
	geom geometry;
BEGIN
	mline := ST_MultiLineStringFromText(geomtext, srid);

	IF mline IS NULL
	THEN
		RAISE EXCEPTION 'Input is not a MultiLinestring';
	END IF;

	geom := ST_Multi(ST_BuildArea(mline));

	RETURN geom;
END;

Function: st_bdpolyfromtext(text, integer)

Returns: geometry

Language: PLPGSQL

args: WKT, srid - Construct a Polygon given an arbitrary collection of closed linestrings as a MultiLineString Well-Known text representation.

DECLARE
	geomtext alias for $1;
	srid alias for $2;
	mline geometry;
	geom geometry;
BEGIN
	mline := ST_MultiLineStringFromText(geomtext, srid);

	IF mline IS NULL
	THEN
		RAISE EXCEPTION 'Input is not a MultiLinestring';
	END IF;

	geom := ST_BuildArea(mline);

	IF GeometryType(geom) != 'POLYGON'
	THEN
		RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead';
	END IF;

	RETURN geom;
END;

Function: st_boundary(public.geometry)

Returns: geometry

Language: C

args: geomA - Returns the closure of the combinatorial boundary of this Geometry.

boundary

Function: st_box2dfromgeohash(text, integer)

Returns: box2d

Language: C

args: geohash, precision=full_precision_of_geohash - Return a BOX2D from a GeoHash string.

box2d_from_geohash

Function: st_buffer(public.geography, double precision)

Returns: geography

Language: SQL

args: g1, radius_of_buffer_in_meters - (T) For geometry: Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry. For geography: Uses a planar transform wrapper. Introduced in 1.5 support for different end cap and mitre settings to control shape. buffer_style options: quad_segs=#,endcap=round|flat|square,join=round|mitre|bevel,mitre_limit=#.#

SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), _ST_BestSRID($1)), $2), 4326))

Function: st_buffer(public.geometry, double precision)

Returns: geometry

Language: C

args: g1, radius_of_buffer - (T) For geometry: Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry. For geography: Uses a planar transform wrapper. Introduced in 1.5 support for different end cap and mitre settings to control shape. buffer_style options: quad_segs=#,endcap=round|flat|square,join=round|mitre|bevel,mitre_limit=#.#

buffer

Function: st_buffer(public.geometry, double precision, integer)

Returns: geometry

Language: SQL

args: g1, radius_of_buffer, num_seg_quarter_circle - (T) For geometry: Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry. For geography: Uses a planar transform wrapper. Introduced in 1.5 support for different end cap and mitre settings to control shape. buffer_style options: quad_segs=#,endcap=round|flat|square,join=round|mitre|bevel,mitre_limit=#.#

 SELECT _ST_Buffer($1, $2,
		CAST('quad_segs='||CAST($3 AS text) as cstring))
	   

Function: st_buffer(public.geometry, double precision, text)

Returns: geometry

Language: SQL

args: g1, radius_of_buffer, buffer_style_parameters - (T) For geometry: Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry. For geography: Uses a planar transform wrapper. Introduced in 1.5 support for different end cap and mitre settings to control shape. buffer_style options: quad_segs=#,endcap=round|flat|square,join=round|mitre|bevel,mitre_limit=#.#

 SELECT _ST_Buffer($1, $2,
		CAST( regexp_replace($3, '^[0123456789]+$',
			'quad_segs='||$3) AS cstring)
		)
	   

Function: st_buffer(text, double precision)

Returns: geometry

Language: SQL

 SELECT ST_Buffer($1::geometry, $2);  

Function: st_buildarea(public.geometry)

Returns: geometry

Language: C

args: A - Creates an areal geometry formed by the constituent linework of given geometry

ST_BuildArea

Function: st_centroid(public.geometry)

Returns: geometry

Language: C

args: g1 - Returns the geometric center of a geometry.

centroid

Function: st_cleangeometry(public.geometry)

Returns: geometry

Language: C

ST_CleanGeometry

Function: st_clip(rast public.raster, geom public.geometry, crop boolean)

Returns: raster

Language: SQL

 SELECT ST_Clip($1, NULL, $2, null::double precision[], $3) 

Function: st_clip(rast public.raster, geom public.geometry, nodataval double precision, crop boolean)

Returns: raster

Language: SQL

 SELECT ST_Clip($1, NULL, $2, ARRAY[$3]::double precision[], $4) 

Function: st_clip(rast public.raster, geom public.geometry, nodataval double precision[], crop boolean)

Returns: raster

Language: SQL

 SELECT ST_Clip($1, NULL, $2, $3, $4) 

Function: st_clip(rast public.raster, nband integer, geom public.geometry, crop boolean)

Returns: raster

Language: SQL

 SELECT ST_Clip($1, ARRAY[$2]::integer[], $3, null::double precision[], $4) 

Function: st_clip(rast public.raster, nband integer, geom public.geometry, nodataval double precision, crop boolean)

Returns: raster

Language: SQL

 SELECT ST_Clip($1, ARRAY[$2]::integer[], $3, ARRAY[$4]::double precision[], $5) 

Function: st_clip(rast public.raster, nband integer[], geom public.geometry, nodataval double precision[], crop boolean)

Returns: raster

Language: PLPGSQL

  BEGIN
		-- short-cut if geometry's extent fully contains raster's extent
		IF (nodataval IS NULL OR array_length(nodataval, 1) < 1) AND geom ~ ST_Envelope(rast) THEN
			RETURN rast;
		END IF;

		RETURN _ST_Clip($1, $2, $3, $4, $5);
	END;
	

Function: st_closestpoint(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: g1, g2 - Returns the 2-dimensional point on g1 that is closest to g2. This is the first point of the shortest line.

LWGEOM_closestpoint

Function: st_collect(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: g1, g2 - Return a specified ST_Geometry value from a collection of other geometries.

LWGEOM_collect

Function: st_collect(public.geometry)

Returns: geometry

Language: INTERNAL

args: g1field - Return a specified ST_Geometry value from a collection of other geometries.

aggregate_dummy

Function: st_collect(public.geometry[])

Returns: geometry

Language: C

args: g1_array - Return a specified ST_Geometry value from a collection of other geometries.

LWGEOM_collect_garray

Function: st_collectionextract(public.geometry, integer)

Returns: geometry

Language: C

args: collection, type - Given a (multi)geometry, returns a (multi)geometry consisting only of elements of the specified type.

ST_CollectionExtract

Function: st_collectionhomogenize(public.geometry)

Returns: geometry

Language: C

args: collection - Given a geometry collection, returns the "simplest" representation of the contents.

ST_CollectionHomogenize

Function: st_colormap(rast public.raster, colormap text, method text)

Returns: raster

Language: SQL

 SELECT ST_ColorMap($1, 1, $2, $3) 

Function: st_colormap(rast public.raster, nband integer, colormap text, method text)

Returns: raster

Language: PLPGSQL

	DECLARE
		_ismap boolean;
		_colormap text;
		_element text[];
	BEGIN
		_ismap := TRUE;

		-- clean colormap to see what it is
		_colormap := split_part(colormap, E'\n', 1);
		_colormap := regexp_replace(_colormap, E':+', ' ', 'g');
		_colormap := regexp_replace(_colormap, E',+', ' ', 'g');
		_colormap := regexp_replace(_colormap, E'\\t+', ' ', 'g');
		_colormap := regexp_replace(_colormap, E' +', ' ', 'g');
		_element := regexp_split_to_array(_colormap, ' ');

		-- treat as colormap
		IF (array_length(_element, 1) > 1) THEN
			_colormap := colormap;
		-- treat as keyword
		ELSE
			method := 'INTERPOLATE';
			CASE lower(trim(both from _colormap))
				WHEN 'grayscale', 'greyscale' THEN
					_colormap := '
100%   0
  0% 254
  nv 255 
					';
				WHEN 'pseudocolor' THEN
					_colormap := '
100% 255   0   0 255
 50%   0 255   0 255
  0%   0   0 255 255
  nv   0   0   0   0
					';
				WHEN 'fire' THEN
					_colormap := '
  100% 243 255 221 255
93.75% 242 255 178 255
 87.5% 255 255 135 255
81.25% 255 228  96 255
   75% 255 187  53 255
68.75% 255 131   7 255
 62.5% 255  84   0 255
56.25% 255  42   0 255
   50% 255   0   0 255
43.75% 255  42   0 255
 37.5% 224  74   0 255
31.25% 183  91   0 255
   25% 140  93   0 255
18.75%  99  82   0 255
 12.5%  58  58   1 255
 6.25%  12  15   0 255
    0%   0   0   0 255
    nv   0   0   0   0
					';
				WHEN 'bluered' THEN
					_colormap := '
100.00% 165   0  33 255
 94.12% 216  21  47 255
 88.24% 247  39  53 255
 82.35% 255  61  61 255
 76.47% 255 120  86 255
 70.59% 255 172 117 255
 64.71% 255 214 153 255
 58.82% 255 241 188 255
 52.94% 255 255 234 255
 47.06% 234 255 255 255
 41.18% 188 249 255 255
 35.29% 153 234 255 255
 29.41% 117 211 255 255
 23.53%  86 176 255 255
 17.65%  61 135 255 255
 11.76%  40  87 255 255
  5.88%  24  28 247 255
  0.00%  36   0 216 255
     nv   0   0   0   0
					';
				ELSE
					RAISE EXCEPTION 'Unknown colormap keyword: %', colormap;
			END CASE;
		END IF;

		RETURN _st_colormap($1, $2, _colormap, $4);
	END;
	

Function: st_combine_bbox(public.box2d, public.geometry)

Returns: box2d

Language: C

BOX2D_combine

Function: st_combine_bbox(public.box3d, public.geometry)

Returns: box3d

Language: C

BOX3D_combine

Function: st_concavehull(param_geom public.geometry, param_pctconvex double precision, param_allow_holes boolean)

Returns: geometry

Language: PLPGSQL

args: geomA, target_percent, allow_holes=false - The concave hull of a geometry represents a possibly concave geometry that encloses all geometries within the set. You can think of it as shrink wrapping.

	DECLARE
		var_convhull geometry := ST_ConvexHull(param_geom);
		var_param_geom geometry := param_geom;
		var_initarea float := ST_Area(var_convhull);
		var_newarea float := var_initarea;
		var_div integer := 6; 
		var_tempgeom geometry;
		var_tempgeom2 geometry;
		var_cent geometry;
		var_geoms geometry[4]; 
		var_enline geometry;
		var_resultgeom geometry;
		var_atempgeoms geometry[];
		var_buf float := 1; 
	BEGIN
		-- We start with convex hull as our base
		var_resultgeom := var_convhull;
		
		IF param_pctconvex = 1 THEN
			return var_resultgeom;
		ELSIF ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN -- it is as concave as it is going to get
			IF param_allow_holes THEN -- leave the holes
				RETURN var_param_geom;
			ELSE -- remove the holes
				var_resultgeom := ST_MakePolygon(ST_ExteriorRing(var_param_geom));
				RETURN var_resultgeom;
			END IF;
		END IF;
		IF ST_Dimension(var_resultgeom) > 1 AND param_pctconvex BETWEEN 0 and 0.98 THEN
		-- get linestring that forms envelope of geometry
			var_enline := ST_Boundary(ST_Envelope(var_param_geom));
			var_buf := ST_Length(var_enline)/1000.0;
			IF ST_GeometryType(var_param_geom) = 'ST_MultiPoint' AND ST_NumGeometries(var_param_geom) BETWEEN 4 and 200 THEN
			-- we make polygons out of points since they are easier to cave in. 
			-- Note we limit to between 4 and 200 points because this process is slow and gets quadratically slow
				var_buf := sqrt(ST_Area(var_convhull)*0.8/(ST_NumGeometries(var_param_geom)*ST_NumGeometries(var_param_geom)));
				var_atempgeoms := ARRAY(SELECT geom FROM ST_DumpPoints(var_param_geom));
				-- 5 and 10 and just fudge factors
				var_tempgeom := ST_Union(ARRAY(SELECT geom
						FROM (
						-- fuse near neighbors together
						SELECT DISTINCT ON (i) i,  ST_Distance(var_atempgeoms[i],var_atempgeoms[j]), ST_Buffer(ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5, 'quad_segs=3') As geom
								FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
									INNER JOIN generate_series(1,array_upper(var_atempgeoms, 1)) As j 
										ON (
								 NOT ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
									AND ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
									)
								UNION ALL
						-- catch the ones with no near neighbors
								SELECT i, 0, ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As geom
								FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
									LEFT JOIN generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms, 1)) As j 
										ON (
								 NOT ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
									AND ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10) 
									)
									WHERE j IS NULL
								ORDER BY 1, 2
							) As foo	) );
				IF ST_IsValid(var_tempgeom) AND ST_GeometryType(var_tempgeom) = 'ST_Polygon' THEN
					var_tempgeom := ST_ForceSFS(ST_Intersection(var_tempgeom, var_convhull));
					IF param_allow_holes THEN
						var_param_geom := var_tempgeom;
					ELSE
						var_param_geom := ST_MakePolygon(ST_ExteriorRing(var_tempgeom));
					END IF;
					return var_param_geom;
				ELSIF ST_IsValid(var_tempgeom) THEN
					var_param_geom := ST_ForceSFS(ST_Intersection(var_tempgeom, var_convhull));	
				END IF;
			END IF;

			IF ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN
				IF NOT param_allow_holes THEN
					var_param_geom := ST_MakePolygon(ST_ExteriorRing(var_param_geom));
				END IF;
				return var_param_geom;
			END IF;
            var_cent := ST_Centroid(var_param_geom);
            IF (ST_XMax(var_enline) - ST_XMin(var_enline) ) > var_buf AND (ST_YMax(var_enline) - ST_YMin(var_enline) ) > var_buf THEN
                    IF ST_Dwithin(ST_Centroid(var_convhull) , ST_Centroid(ST_Envelope(var_param_geom)), var_buf/2) THEN
                -- If the geometric dimension is > 1 and the object is symettric (cutting at centroid will not work -- offset a bit)
                        var_cent := ST_Translate(var_cent, (ST_XMax(var_enline) - ST_XMin(var_enline))/1000,  (ST_YMAX(var_enline) - ST_YMin(var_enline))/1000);
                    ELSE
                        -- uses closest point on geometry to centroid. I can't explain why we are doing this
                        var_cent := ST_ClosestPoint(var_param_geom,var_cent);
                    END IF;
                    IF ST_DWithin(var_cent, var_enline,var_buf) THEN
                        var_cent := ST_centroid(ST_Envelope(var_param_geom));
                    END IF;
                    -- break envelope into 4 triangles about the centroid of the geometry and returned the clipped geometry in each quadrant
                    FOR i in 1 .. 4 LOOP
                       var_geoms[i] := ST_MakePolygon(ST_MakeLine(ARRAY[ST_PointN(var_enline,i), ST_PointN(var_enline,i+1), var_cent, ST_PointN(var_enline,i)]));
                       var_geoms[i] := ST_ForceSFS(ST_Intersection(var_param_geom, ST_Buffer(var_geoms[i],var_buf)));
                       IF ST_IsValid(var_geoms[i]) THEN 
                            
                       ELSE
                            var_geoms[i] := ST_BuildArea(ST_MakeLine(ARRAY[ST_PointN(var_enline,i), ST_PointN(var_enline,i+1), var_cent, ST_PointN(var_enline,i)]));
                       END IF; 
                    END LOOP;
                    var_tempgeom := ST_Union(ARRAY[ST_ConvexHull(var_geoms[1]), ST_ConvexHull(var_geoms[2]) , ST_ConvexHull(var_geoms[3]), ST_ConvexHull(var_geoms[4])]); 
                    --RAISE NOTICE 'Curr vex % ', ST_AsText(var_tempgeom);
                    IF ST_Area(var_tempgeom) <= var_newarea AND ST_IsValid(var_tempgeom)  THEN --AND ST_GeometryType(var_tempgeom) ILIKE '%Polygon'
                        
                        var_tempgeom := ST_Buffer(ST_ConcaveHull(var_geoms[1],least(param_pctconvex + param_pctconvex/var_div),true),var_buf, 'quad_segs=2');
                        FOR i IN 1 .. 4 LOOP
                            var_geoms[i] := ST_Buffer(ST_ConcaveHull(var_geoms[i],least(param_pctconvex + param_pctconvex/var_div),true), var_buf, 'quad_segs=2');
                            IF ST_IsValid(var_geoms[i]) Then
                                var_tempgeom := ST_Union(var_tempgeom, var_geoms[i]);
                            ELSE
                                RAISE NOTICE 'Not valid % %', i, ST_AsText(var_tempgeom);
                                var_tempgeom := ST_Union(var_tempgeom, ST_ConvexHull(var_geoms[i]));
                            END IF; 
                        END LOOP;

                        --RAISE NOTICE 'Curr concave % ', ST_AsText(var_tempgeom);
                        IF ST_IsValid(var_tempgeom) THEN
                            var_resultgeom := var_tempgeom;
                        END IF;
                        var_newarea := ST_Area(var_resultgeom);
                    ELSIF ST_IsValid(var_tempgeom) THEN
                        var_resultgeom := var_tempgeom;
                    END IF;

                    IF ST_NumGeometries(var_resultgeom) > 1  THEN
                        var_tempgeom := _ST_ConcaveHull(var_resultgeom);
                        IF ST_IsValid(var_tempgeom) AND ST_GeometryType(var_tempgeom) ILIKE 'ST_Polygon' THEN
                            var_resultgeom := var_tempgeom;
                        ELSE
                            var_resultgeom := ST_Buffer(var_tempgeom,var_buf, 'quad_segs=2');
                        END IF;
                    END IF;
                    IF param_allow_holes = false THEN 
                    -- only keep exterior ring since we do not want holes
                        var_resultgeom := ST_MakePolygon(ST_ExteriorRing(var_resultgeom));
                    END IF;
                ELSE
                    var_resultgeom := ST_Buffer(var_resultgeom,var_buf);
                END IF;
                var_resultgeom := ST_ForceSFS(ST_Intersection(var_resultgeom, ST_ConvexHull(var_param_geom)));
            ELSE
                -- dimensions are too small to cut
                var_resultgeom := _ST_ConcaveHull(var_param_geom);
            END IF;
            RETURN var_resultgeom;
	END;

Function: st_contains(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: geomA, geomB - Returns true if and only if no points of B lie in the exterior of A, and at least one point of the interior of B lies in the interior of A.

SELECT $1 && $2 AND _ST_Contains($1,$2)

Function: st_contains(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if no points of raster rastB lie in the exterior of raster rastA and at least one point of the interior of rastB lies in the interior of rastA.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_contains(st_convexhull($1), st_convexhull($3)) ELSE _st_contains($1, $2, $3, $4) END 

Function: st_contains(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if no points of raster rastB lie in the exterior of raster rastA and at least one point of the interior of rastB lies in the interior of rastA.

 SELECT st_contains($1, NULL::integer, $2, NULL::integer) 

Function: st_containsproperly(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: geomA, geomB - Returns true if B intersects the interior of A but not the boundary (or exterior). A does not contain properly itself, but does contain itself.

SELECT $1 && $2 AND _ST_ContainsProperly($1,$2)

Function: st_containsproperly(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if rastB intersects the interior of rastA but not the boundary or exterior of rastA.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_containsproperly(st_convexhull($1), st_convexhull($3)) ELSE _st_containsproperly($1, $2, $3, $4) END 

Function: st_containsproperly(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if rastB intersects the interior of rastA but not the boundary or exterior of rastA.

 SELECT st_containsproperly($1, NULL::integer, $2, NULL::integer) 

Function: st_convexhull(public.geometry)

Returns: geometry

Language: C

args: geomA - The convex hull of a geometry represents the minimum convex geometry that encloses all geometries within the set.

convexhull

Function: st_convexhull(public.raster)

Returns: geometry

Language: C

RASTER_convex_hull

Function: st_coorddim(geometry public.geometry)

Returns: smallint

Language: C

args: geomA - Return the coordinate dimension of the ST_Geometry value.

LWGEOM_ndims

Function: st_count(rast public.raster, exclude_nodata_value boolean)

Returns: bigint

Language: SQL

args: rast, exclude_nodata_value - Returns the number of pixels in a given band of a raster or raster coverage. If no band is specified defaults to band 1. If exclude_nodata_value is set to true, will only count pixels that are not equal to the nodata value.

 SELECT _st_count($1, 1, $2, 1) 

Function: st_count(rast public.raster, nband integer, exclude_nodata_value boolean)

Returns: bigint

Language: SQL

args: rast, nband=1, exclude_nodata_value=true - Returns the number of pixels in a given band of a raster or raster coverage. If no band is specified defaults to band 1. If exclude_nodata_value is set to true, will only count pixels that are not equal to the nodata value.

 SELECT _st_count($1, $2, $3, 1) 

Function: st_count(rastertable text, rastercolumn text, exclude_nodata_value boolean)

Returns: bigint

Language: SQL

args: rastertable, rastercolumn, exclude_nodata_value - Returns the number of pixels in a given band of a raster or raster coverage. If no band is specified defaults to band 1. If exclude_nodata_value is set to true, will only count pixels that are not equal to the nodata value.

 SELECT _st_count($1, $2, 1, $3, 1) 

Function: st_count(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean)

Returns: bigint

Language: SQL

args: rastertable, rastercolumn, nband=1, exclude_nodata_value=true - Returns the number of pixels in a given band of a raster or raster coverage. If no band is specified defaults to band 1. If exclude_nodata_value is set to true, will only count pixels that are not equal to the nodata value.

 SELECT _st_count($1, $2, $3, $4, 1) 

Function: st_coveredby(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: geomA, geomB - Returns 1 (TRUE) if no point in Geometry/Geography A is outside Geometry/Geography B

SELECT $1 && $2 AND _ST_CoveredBy($1,$2)

Function: st_coveredby(public.geography, public.geography)

Returns: boolean

Language: SQL

args: geogA, geogB - Returns 1 (TRUE) if no point in Geometry/Geography A is outside Geometry/Geography B

SELECT $1 && $2 AND _ST_Covers($2, $1)

Function: st_coveredby(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if no points of raster rastA lie outside raster rastB.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_coveredby(st_convexhull($1), st_convexhull($3)) ELSE _st_coveredby($1, $2, $3, $4) END 

Function: st_coveredby(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if no points of raster rastA lie outside raster rastB.

 SELECT st_coveredby($1, NULL::integer, $2, NULL::integer) 

Function: st_coveredby(text, text)

Returns: boolean

Language: SQL

 SELECT ST_CoveredBy($1::geometry, $2::geometry);  

Function: st_covers(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: geomA, geomB - Returns 1 (TRUE) if no point in Geometry B is outside Geometry A

SELECT $1 && $2 AND _ST_Covers($1,$2)

Function: st_covers(public.geography, public.geography)

Returns: boolean

Language: SQL

args: geogpolyA, geogpointB - Returns 1 (TRUE) if no point in Geometry B is outside Geometry A

SELECT $1 && $2 AND _ST_Covers($1, $2)

Function: st_covers(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if no points of raster rastB lie outside raster rastA.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_covers(st_convexhull($1), st_convexhull($3)) ELSE _st_covers($1, $2, $3, $4) END 

Function: st_covers(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if no points of raster rastB lie outside raster rastA.

 SELECT st_covers($1, NULL::integer, $2, NULL::integer) 

Function: st_covers(text, text)

Returns: boolean

Language: SQL

 SELECT ST_Covers($1::geometry, $2::geometry);  

Function: st_crosses(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: g1, g2 - Returns TRUE if the supplied geometries have some, but not all, interior points in common.

SELECT $1 && $2 AND _ST_Crosses($1,$2)

Function: st_curvetoline(public.geometry)

Returns: geometry

Language: SQL

args: curveGeom - Converts a CIRCULARSTRING/CURVEDPOLYGON to a LINESTRING/POLYGON

SELECT ST_CurveToLine($1, 32)

Function: st_curvetoline(public.geometry, integer)

Returns: geometry

Language: C

args: curveGeom, segments_per_qtr_circle - Converts a CIRCULARSTRING/CURVEDPOLYGON to a LINESTRING/POLYGON

LWGEOM_curve_segmentize

Function: st_delaunaytriangles(g1 public.geometry, tolerance double precision, flags integer)

Returns: geometry

Language: C

args: g1, tolerance, flags - Return a Delaunay triangulation around the given input points.

ST_DelaunayTriangles

Function: st_dfullywithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: SQL

args: g1, g2, distance - Returns true if all of the geometries are within the specified distance of one another

SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DFullyWithin(ST_ConvexHull($1), ST_ConvexHull($2), $3)

Function: st_dfullywithin(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer, distance double precision)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB, distance_of_srid - Return true if rasters rastA and rastB are fully within the specified distance of each other.

 SELECT $1::geometry && ST_Expand(ST_ConvexHull($3), $5) AND $3::geometry && ST_Expand(ST_ConvexHull($1), $5) AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_dfullywithin(st_convexhull($1), st_convexhull($3), $5) ELSE _st_dfullywithin($1, $2, $3, $4, $5) END 

Function: st_dfullywithin(rast1 public.raster, rast2 public.raster, distance double precision)

Returns: boolean

Language: SQL

args: rastA, rastB, distance_of_srid - Return true if rasters rastA and rastB are fully within the specified distance of each other.

 SELECT st_dfullywithin($1, NULL::integer, $2, NULL::integer, $3) 

Function: st_difference(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: geomA, geomB - Returns a geometry that represents that part of geometry A that does not intersect with geometry B.

difference

Function: st_dimension(public.geometry)

Returns: integer

Language: C

args: g - The inherent dimension of this Geometry object, which must be less than or equal to the coordinate dimension.

LWGEOM_dimension

Function: st_disjoint(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: C

args: A, B - Returns TRUE if the Geometries do not "spatially intersect" - if they do not share any space together.

disjoint

Function: st_disjoint(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if raster rastA does not spatially intersect rastB.

 SELECT CASE WHEN $2 IS NULL OR $4 IS NULL THEN st_disjoint(st_convexhull($1), st_convexhull($3)) ELSE NOT _st_intersects($1, $2, $3, $4) END 

Function: st_disjoint(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if raster rastA does not spatially intersect rastB.

 SELECT st_disjoint($1, NULL::integer, $2, NULL::integer) 

Function: st_distance(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

args: g1, g2 - For geometry type Returns the 2-dimensional cartesian minimum distance (based on spatial ref) between two geometries in projected units. For geography type defaults to return spheroidal minimum distance between two geographies in meters.

distance

Function: st_distance(public.geography, public.geography)

Returns: double precision

Language: SQL

args: gg1, gg2 - For geometry type Returns the 2-dimensional cartesian minimum distance (based on spatial ref) between two geometries in projected units. For geography type defaults to return spheroidal minimum distance between two geographies in meters.

SELECT _ST_Distance($1, $2, 0.0, true)

Function: st_distance(public.geography, public.geography, boolean)

Returns: double precision

Language: SQL

args: gg1, gg2, use_spheroid - For geometry type Returns the 2-dimensional cartesian minimum distance (based on spatial ref) between two geometries in projected units. For geography type defaults to return spheroidal minimum distance between two geographies in meters.

SELECT _ST_Distance($1, $2, 0.0, $3)

Function: st_distance(text, text)

Returns: double precision

Language: SQL

 SELECT ST_Distance($1::geometry, $2::geometry);  

Function: st_distance_sphere(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: SQL

args: geomlonlatA, geomlonlatB - Returns minimum distance in meters between two lon/lat geometries. Uses a spherical earth and radius of 6370986 meters. Faster than ST_Distance_Spheroid , but less accurate. PostGIS versions prior to 1.5 only implemented for points.

	select st_distance(geography($1),geography($2),false)
	

Function: st_distance_spheroid(geom1 public.geometry, geom2 public.geometry, public.spheroid)

Returns: double precision

Language: C

args: geomlonlatA, geomlonlatB, measurement_spheroid - Returns the minimum distance between two lon/lat geometries given a particular spheroid. PostGIS versions prior to 1.5 only support points.

LWGEOM_distance_ellipsoid

Function: st_distinct4ma(matrix double precision[], nodatamode text, args text[])

Returns: double precision

Language: SQL

 SELECT COUNT(DISTINCT unnest)::float FROM unnest($1) 

Function: st_distinct4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: SQL

 SELECT COUNT(DISTINCT unnest)::double precision FROM unnest($1) 

Function: st_dump(public.geometry)

Returns: SET OF geometry_dump

Language: C

args: g1 - Returns a set of geometry_dump (geom,path) rows, that make up a geometry g1.

LWGEOM_dump

Function: st_dumpaspolygons(rast public.raster, band integer, exclude_nodata_value boolean)

Returns: SET OF geomval

Language: C

RASTER_dumpAsPolygons

Function: st_dumppoints(public.geometry)

Returns: SET OF geometry_dump

Language: C

args: geom - Returns a set of geometry_dump (geom,path) rows of all points that make up a geometry.

LWGEOM_dumppoints

Function: st_dumprings(public.geometry)

Returns: SET OF geometry_dump

Language: C

args: a_polygon - Returns a set of geometry_dump rows, representing the exterior and interior rings of a polygon.

LWGEOM_dump_rings

Function: st_dumpvalues(rast public.raster, nband integer, exclude_nodata_value boolean)

Returns: double precision[]

Language: SQL

args: rast, nband, exclude_nodata_value=true - Get the values of the specified band as a 2-dimension array.

 SELECT valarray FROM st_dumpvalues($1, ARRAY[$2]::integer[], $3) 

Function: st_dumpvalues(rast public.raster, nband integer[], exclude_nodata_value boolean)

Returns: SET OF record

Language: C

args: rast, nband, exclude_nodata_value=true - Get the values of the specified band as a 2-dimension array.

RASTER_dumpValues

Function: st_dwithin(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: boolean

Language: SQL

args: g1, g2, distance_of_srid - Returns true if the geometries are within the specified distance of one another. For geometry units are in those of spatial reference and For geography units are in meters and measurement is defaulted to use_spheroid=true (measure around spheroid), for faster check, use_spheroid=false to measure along sphere.

SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3)

Function: st_dwithin(public.geography, public.geography, double precision)

Returns: boolean

Language: SQL

args: gg1, gg2, distance_meters - Returns true if the geometries are within the specified distance of one another. For geometry units are in those of spatial reference and For geography units are in meters and measurement is defaulted to use_spheroid=true (measure around spheroid), for faster check, use_spheroid=false to measure along sphere.

SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, true)

Function: st_dwithin(public.geography, public.geography, double precision, boolean)

Returns: boolean

Language: SQL

args: gg1, gg2, distance_meters, use_spheroid - Returns true if the geometries are within the specified distance of one another. For geometry units are in those of spatial reference and For geography units are in meters and measurement is defaulted to use_spheroid=true (measure around spheroid), for faster check, use_spheroid=false to measure along sphere.

SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, $4)

Function: st_dwithin(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer, distance double precision)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB, distance_of_srid - Return true if rasters rastA and rastB are within the specified distance of each other.

 SELECT $1::geometry && ST_Expand(ST_ConvexHull($3), $5) AND $3::geometry && ST_Expand(ST_ConvexHull($1), $5) AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_dwithin(st_convexhull($1), st_convexhull($3), $5) ELSE _st_dwithin($1, $2, $3, $4, $5) END 

Function: st_dwithin(rast1 public.raster, rast2 public.raster, distance double precision)

Returns: boolean

Language: SQL

args: rastA, rastB, distance_of_srid - Return true if rasters rastA and rastB are within the specified distance of each other.

 SELECT st_dwithin($1, NULL::integer, $2, NULL::integer, $3) 

Function: st_dwithin(text, text, double precision)

Returns: boolean

Language: SQL

 SELECT ST_DWithin($1::geometry, $2::geometry, $3);  

Function: st_endpoint(public.geometry)

Returns: geometry

Language: C

args: g - Returns the last point of a LINESTRING geometry as a POINT.

LWGEOM_endpoint_linestring

Function: st_envelope(public.geometry)

Returns: geometry

Language: C

args: g1 - Returns a geometry representing the double precision (float8) bounding box of the supplied geometry.

LWGEOM_envelope

Function: st_envelope(public.raster)

Returns: geometry

Language: SQL

select st_envelope(st_convexhull($1))

Function: st_equals(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: A, B - Returns true if the given geometries represent the same geometry. Directionality is ignored.

SELECT $1 ~= $2 AND _ST_Equals($1,$2)

Function: st_estimated_extent(text, text)

Returns: box2d

Language: SQL

 SELECT _postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
    -- We use security invoker instead of security definer 
    -- to prevent malicious injection of a same named different function
    -- that would be run under elevated permissions
    SELECT ST_EstimatedExtent($1, $2);
  

Function: st_estimated_extent(text, text, text)

Returns: box2d

Language: SQL

 SELECT _postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
    -- We use security invoker instead of security definer 
    -- to prevent malicious injection of a different same named function
    SELECT ST_EstimatedExtent($1, $2, $3);
  

Function: st_estimatedextent(text, text)

Returns: box2d

Language: C

args: table_name, geocolumn_name - Return the estimated extent of the given spatial table. The estimated is taken from the geometry columns statistics. The current schema will be used if not specified.

gserialized_estimated_extent

Function: st_estimatedextent(text, text, text)

Returns: box2d

Language: C

args: schema_name, table_name, geocolumn_name - Return the estimated extent of the given spatial table. The estimated is taken from the geometry columns statistics. The current schema will be used if not specified.

gserialized_estimated_extent

Function: st_expand(public.box2d, double precision)

Returns: box2d

Language: C

args: g1, units_to_expand - Returns bounding box expanded in all directions from the bounding box of the input geometry. Uses double-precision

BOX2D_expand

Function: st_expand(public.box3d, double precision)

Returns: box3d

Language: C

args: g1, units_to_expand - Returns bounding box expanded in all directions from the bounding box of the input geometry. Uses double-precision

BOX3D_expand

Function: st_expand(public.geometry, double precision)

Returns: geometry

Language: C

args: g1, units_to_expand - Returns bounding box expanded in all directions from the bounding box of the input geometry. Uses double-precision

LWGEOM_expand

Function: st_extent(public.geometry)

Returns: box2d

Language: INTERNAL

args: geomfield - an aggregate function that returns the bounding box that bounds rows of geometries.

aggregate_dummy

Function: st_exteriorring(public.geometry)

Returns: geometry

Language: C

args: a_polygon - Returns a line string representing the exterior ring of the POLYGON geometry. Return NULL if the geometry is not a polygon. Will not work with MULTIPOLYGON

LWGEOM_exteriorring_polygon

Function: st_find_extent(text, text)

Returns: box2d

Language: PLPGSQL

DECLARE
	tablename alias for $1;
	columnname alias for $2;
	myrec RECORD;

BEGIN
	FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || tablename || '"' LOOP
		return myrec.extent;
	END LOOP;
END;

Function: st_find_extent(text, text, text)

Returns: box2d

Language: PLPGSQL

DECLARE
	schemaname alias for $1;
	tablename alias for $2;
	columnname alias for $3;
	myrec RECORD;

BEGIN
	FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || schemaname || '"."' || tablename || '"' LOOP
		return myrec.extent;
	END LOOP;
END;

Function: st_flipcoordinates(public.geometry)

Returns: geometry

Language: C

args: geom - Returns a version of the given geometry with X and Y axis flipped. Useful for people who have built latitude/longitude features and need to fix them.

ST_FlipCoordinates

Function: st_force2d(public.geometry)

Returns: geometry

Language: C

args: geomA - Forces the geometries into a "2-dimensional mode" so that all output representations will only have the X and Y coordinates.

LWGEOM_force_2d

Function: st_force3d(public.geometry)

Returns: geometry

Language: C

args: geomA - Forces the geometries into XYZ mode. This is an alias for ST_Force3DZ.

LWGEOM_force_3dz

Function: st_force3dm(public.geometry)

Returns: geometry

Language: C

args: geomA - Forces the geometries into XYM mode.

LWGEOM_force_3dm

Function: st_force3dz(public.geometry)

Returns: geometry

Language: C

args: geomA - Forces the geometries into XYZ mode. This is a synonym for ST_Force3D.

LWGEOM_force_3dz

Function: st_force4d(public.geometry)

Returns: geometry

Language: C

args: geomA - Forces the geometries into XYZM mode.

LWGEOM_force_4d

Function: st_force_2d(public.geometry)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Force_2d', 'ST_Force2D', '2.1.0');
    SELECT ST_Force2D($1);
  

Function: st_force_3d(public.geometry)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Force_3d', 'ST_Force3D', '2.1.0');
    SELECT ST_Force3D($1);
  

Function: st_force_3dm(public.geometry)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Force_3dm', 'ST_Force3DM', '2.1.0');
    SELECT ST_Force3DM($1);
  

Function: st_force_3dz(public.geometry)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Force_3dz', 'ST_Force3DZ', '2.1.0');
    SELECT ST_Force3DZ($1);
  

Function: st_force_4d(public.geometry)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Force_4d', 'ST_Force4D', '2.1.0');
    SELECT ST_Force4D($1);
  

Function: st_force_collection(public.geometry)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Force_Collection', 'ST_ForceCollection', '2.1.0');
    SELECT ST_ForceCollection($1);
  

Function: st_forcecollection(public.geometry)

Returns: geometry

Language: C

args: geomA - Converts the geometry into a GEOMETRYCOLLECTION.

LWGEOM_force_collection

Function: st_forcerhr(public.geometry)

Returns: geometry

Language: C

args: g - Forces the orientation of the vertices in a polygon to follow the Right-Hand-Rule.

LWGEOM_force_clockwise_poly

Function: st_forcesfs( public.geometry, version text)

Returns: geometry

Language: C

args: geomA, version - Forces the geometries to use SFS 1.1 geometry types only.

LWGEOM_force_sfs

Function: st_forcesfs(public.geometry)

Returns: geometry

Language: C

args: geomA - Forces the geometries to use SFS 1.1 geometry types only.

LWGEOM_force_sfs

Function: st_fromgdalraster(gdaldata bytea, srid integer)

Returns: raster

Language: C

args: gdaldata, srid=NULL - Returns a raster from a supported GDAL raster file.

RASTER_fromGDALRaster

Function: st_gdaldrivers()

Returns: SET OF record

Language: C

args: OUT idx, OUT short_name, OUT long_name, OUT create_options - Returns a list of raster formats supported by your lib gdal. These are the formats you can output your raster using ST_AsGDALRaster.

RASTER_getGDALDrivers

Function: st_geogfromtext(text)

Returns: geography

Language: C

args: EWKT - Return a specified geography value from Well-Known Text representation or extended (WKT).

geography_from_text

Function: st_geogfromwkb(bytea)

Returns: geography

Language: C

args: geom - Creates a geography instance from a Well-Known Binary geometry representation (WKB) or extended Well Known Binary (EWKB).

geography_from_binary

Function: st_geographyfromtext(text)

Returns: geography

Language: C

args: EWKT - Return a specified geography value from Well-Known Text representation or extended (WKT).

geography_from_text

Function: st_geohash(geog public.geography, maxchars integer)

Returns: text

Language: C

ST_GeoHash

Function: st_geohash(geom public.geometry, maxchars integer)

Returns: text

Language: C

args: geom, maxchars=full_precision_of_point - Return a GeoHash representation of the geometry.

ST_GeoHash

Function: st_geomcollfromtext(text)

Returns: geometry

Language: SQL

args: WKT - Makes a collection Geometry from collection WKT with the given SRID. If SRID is not give, it defaults to 0.

	SELECT CASE
	WHEN geometrytype(ST_GeomFromText($1)) = 'GEOMETRYCOLLECTION'
	THEN ST_GeomFromText($1)
	ELSE NULL END
	

Function: st_geomcollfromtext(text, integer)

Returns: geometry

Language: SQL

args: WKT, srid - Makes a collection Geometry from collection WKT with the given SRID. If SRID is not give, it defaults to 0.

	SELECT CASE
	WHEN geometrytype(ST_GeomFromText($1, $2)) = 'GEOMETRYCOLLECTION'
	THEN ST_GeomFromText($1,$2)
	ELSE NULL END
	

Function: st_geomcollfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE
	WHEN geometrytype(ST_GeomFromWKB($1)) = 'GEOMETRYCOLLECTION'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_geomcollfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE
	WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'GEOMETRYCOLLECTION'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_geometryfromtext(text)

Returns: geometry

Language: C

args: WKT - Return a specified ST_Geometry value from Well-Known Text representation (WKT). This is an alias name for ST_GeomFromText

LWGEOM_from_text

Function: st_geometryfromtext(text, integer)

Returns: geometry

Language: C

args: WKT, srid - Return a specified ST_Geometry value from Well-Known Text representation (WKT). This is an alias name for ST_GeomFromText

LWGEOM_from_text

Function: st_geometryn(public.geometry, integer)

Returns: geometry

Language: C

args: geomA, n - Return the 1-based Nth geometry if the geometry is a GEOMETRYCOLLECTION, (MULTI)POINT, (MULTI)LINESTRING, MULTICURVE or (MULTI)POLYGON, POLYHEDRALSURFACE Otherwise, return NULL.

LWGEOM_geometryn_collection

Function: st_geometrytype(public.geometry)

Returns: text

Language: C

args: g1 - Return the geometry type of the ST_Geometry value.

geometry_geometrytype

Function: st_geomfromewkb(bytea)

Returns: geometry

Language: C

args: EWKB - Return a specified ST_Geometry value from Extended Well-Known Binary representation (EWKB).

LWGEOMFromWKB

Function: st_geomfromewkt(text)

Returns: geometry

Language: C

args: EWKT - Return a specified ST_Geometry value from Extended Well-Known Text representation (EWKT).

parse_WKT_lwgeom

Function: st_geomfromgeohash(text, integer)

Returns: geometry

Language: SQL

args: geohash, precision=full_precision_of_geohash - Return a geometry from a GeoHash string.

 SELECT CAST(ST_Box2dFromGeoHash($1, $2) AS geometry); 

Function: st_geomfromgeojson(text)

Returns: geometry

Language: C

args: geomjson - Takes as input a geojson representation of a geometry and outputs a PostGIS geometry object

geom_from_geojson

Function: st_geomfromgml(text)

Returns: geometry

Language: SQL

args: geomgml - Takes as input GML representation of geometry and outputs a PostGIS geometry object

SELECT _ST_GeomFromGML($1, 0)

Function: st_geomfromgml(text, integer)

Returns: geometry

Language: C

args: geomgml, srid - Takes as input GML representation of geometry and outputs a PostGIS geometry object

geom_from_gml

Function: st_geomfromkml(text)

Returns: geometry

Language: C

args: geomkml - Takes as input KML representation of geometry and outputs a PostGIS geometry object

geom_from_kml

Function: st_geomfromtext(text)

Returns: geometry

Language: C

args: WKT - Return a specified ST_Geometry value from Well-Known Text representation (WKT).

LWGEOM_from_text

Function: st_geomfromtext(text, integer)

Returns: geometry

Language: C

args: WKT, srid - Return a specified ST_Geometry value from Well-Known Text representation (WKT).

LWGEOM_from_text

Function: st_geomfromwkb(bytea)

Returns: geometry

Language: C

args: geom - Makes a geometry from WKB with the given SRID

LWGEOM_from_WKB

Function: st_geomfromwkb(bytea, integer)

Returns: geometry

Language: SQL

args: geom, srid - Makes a geometry from WKB with the given SRID

SELECT ST_SetSRID(ST_GeomFromWKB($1), $2)

Function: st_georeference(rast public.raster, format text)

Returns: text

Language: PLPGSQL

args: rast, format=GDAL - Returns the georeference meta data in GDAL or ESRI format as commonly seen in a world file. Default is GDAL.

    DECLARE
				scale_x numeric;
				scale_y numeric;
				skew_x numeric;
				skew_y numeric;
				ul_x numeric;
				ul_y numeric;

        result text;
    BEGIN
			SELECT scalex::numeric, scaley::numeric, skewx::numeric, skewy::numeric, upperleftx::numeric, upperlefty::numeric
				INTO scale_x, scale_y, skew_x, skew_y, ul_x, ul_y FROM ST_Metadata(rast);

						-- scale x
            result := trunc(scale_x, 10) || E'\n';

						-- skew y
            result := result || trunc(skew_y, 10) || E'\n';

						-- skew x
            result := result || trunc(skew_x, 10) || E'\n';

						-- scale y
            result := result || trunc(scale_y, 10) || E'\n';

        IF format = 'ESRI' THEN
						-- upper left x
            result := result || trunc((ul_x + scale_x * 0.5), 10) || E'\n';

						-- upper left y
            result = result || trunc((ul_y + scale_y * 0.5), 10) || E'\n';
        ELSE -- IF format = 'GDAL' THEN
						-- upper left x
            result := result || trunc(ul_x, 10) || E'\n';

						-- upper left y
            result := result || trunc(ul_y, 10) || E'\n';
        END IF;

        RETURN result;
    END;
    

Function: st_geotransform( public.raster)

Returns: record

Language: C

RASTER_getGeotransform

Function: st_gmltosql(text)

Returns: geometry

Language: SQL

args: geomgml - Return a specified ST_Geometry value from GML representation. This is an alias name for ST_GeomFromGML

SELECT _ST_GeomFromGML($1, 0)

Function: st_gmltosql(text, integer)

Returns: geometry

Language: C

args: geomgml, srid - Return a specified ST_Geometry value from GML representation. This is an alias name for ST_GeomFromGML

geom_from_gml

Function: st_hasarc(geometry public.geometry)

Returns: boolean

Language: C

args: geomA - Returns true if a geometry or geometry collection contains a circular string

LWGEOM_has_arc

Function: st_hasnoband(rast public.raster, nband integer)

Returns: boolean

Language: C

args: rast, bandnum=1 - Returns true if there is no band with given band number. If no band number is specified, then band number 1 is assumed.

RASTER_hasNoBand

Function: st_hausdorffdistance(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

args: g1, g2 - Returns the Hausdorff distance between two geometries. Basically a measure of how similar or dissimilar 2 geometries are. Units are in the units of the spatial reference system of the geometries.

hausdorffdistance

Function: st_hausdorffdistance(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: double precision

Language: C

args: g1, g2, densifyFrac - Returns the Hausdorff distance between two geometries. Basically a measure of how similar or dissimilar 2 geometries are. Units are in the units of the spatial reference system of the geometries.

hausdorffdistancedensify

Function: st_height(public.raster)

Returns: integer

Language: C

args: rast - Returns the height of the raster in pixels.

RASTER_getHeight

Function: st_hillshade(rast public.raster, nband integer, customextent public.raster, pixeltype text, azimuth double precision, altitude double precision, max_bright double precision, scale double precision, interpolate_nodata boolean)

Returns: raster

Language: PLPGSQL

	DECLARE
		_rast raster;
		_nband integer;
		_pixtype text;
		_pixwidth double precision;
		_pixheight double precision;
		_width integer;
		_height integer;
		_customextent raster;
		_extenttype text;
	BEGIN
		_customextent := customextent;
		IF _customextent IS NULL THEN
			_extenttype := 'FIRST';
		ELSE
			_extenttype := 'CUSTOM';
		END IF;

		IF interpolate_nodata IS TRUE THEN
			_rast := ST_MapAlgebra(
				ARRAY[ROW(rast, nband)]::rastbandarg[],
				'st_invdistweight4ma(double precision[][][], integer[][], text[])'::regprocedure,
				pixeltype,
				'FIRST', NULL,
				1, 1
			);
			_nband := 1;
			_pixtype := NULL;
		ELSE
			_rast := rast;
			_nband := nband;
			_pixtype := pixeltype;
		END IF;

		-- get properties
		_pixwidth := ST_PixelWidth(_rast);
		_pixheight := ST_PixelHeight(_rast);
		SELECT width, height, scalex INTO _width, _height FROM ST_Metadata(_rast);

		RETURN ST_MapAlgebra(
			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
			'_st_hillshade4ma(double precision[][][], integer[][], text[])'::regprocedure,
			_pixtype,
			_extenttype, _customextent,
			1, 1,
			_pixwidth::text, _pixheight::text,
			_width::text, _height::text,
			$5::text, $6::text,
			$7::text, $8::text
		);
	END;
	

Function: st_hillshade(rast public.raster, nband integer, pixeltype text, azimuth double precision, altitude double precision, max_bright double precision, scale double precision, interpolate_nodata boolean)

Returns: raster

Language: SQL

 SELECT st_hillshade($1, $2, NULL::raster, $3, $4, $5, $6, $7, $8) 

Function: st_histogram(rast public.raster, nband integer, bins integer, right boolean)

Returns: SET OF record

Language: SQL

args: rast, nband, bins, right - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT min, max, count, percent FROM _st_histogram($1, $2, TRUE, 1, $3, NULL, $4) 

Function: st_histogram(rast public.raster, nband integer, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

args: rast, nband, bins, width=NULL, right=false - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT min, max, count, percent FROM _st_histogram($1, $2, TRUE, 1, $3, $4, $5) 

Function: st_histogram(rast public.raster, nband integer, exclude_nodata_value boolean, bins integer, right boolean)

Returns: SET OF record

Language: SQL

args: rast, nband, exclude_nodata_value, bins, right - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT min, max, count, percent FROM _st_histogram($1, $2, $3, 1, $4, NULL, $5) 

Function: st_histogram(rast public.raster, nband integer, exclude_nodata_value boolean, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

args: rast, nband=1, exclude_nodata_value=true, bins=autocomputed, width=NULL, right=false - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT min, max, count, percent FROM _st_histogram($1, $2, $3, 1, $4, $5, $6) 

Function: st_histogram(rastertable text, rastercolumn text, nband integer, bins integer, right boolean)

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband, bins, right - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT _st_histogram($1, $2, $3, TRUE, 1, $4, NULL, $5) 

Function: st_histogram(rastertable text, rastercolumn text, nband integer, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband=1, bins, width=NULL, right=false - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT _st_histogram($1, $2, $3, TRUE, 1, $4, $5, $6) 

Function: st_histogram(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, bins integer, right boolean)

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband, exclude_nodata_value, bins, right - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT _st_histogram($1, $2, $3, $4, 1, $5, NULL, $6) 

Function: st_histogram(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, bins integer, width double precision[], right boolean)

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband=1, exclude_nodata_value=true, bins=autocomputed, width=NULL, right=false - Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.

 SELECT _st_histogram($1, $2, $3, $4, 1, $5, $6, $7) 

Function: st_interiorringn(public.geometry, integer)

Returns: geometry

Language: C

args: a_polygon, n - Return the Nth interior linestring ring of the polygon geometry. Return NULL if the geometry is not a polygon or the given N is out of range.

LWGEOM_interiorringn_polygon

Function: st_interpolatepoint(line public.geometry, point public.geometry)

Returns: double precision

Language: C

args: line, point - Return the value of the measure dimension of a geometry at the point closed to the provided point.

ST_InterpolatePoint

Function: st_intersection(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: geomA, geomB - (T) Returns a geometry that represents the shared portion of geomA and geomB. The geography implementation does a transform to geometry to do the intersection and then transform back to WGS84.

intersection

Function: st_intersection(geomin public.geometry, rast public.raster, band integer)

Returns: SET OF geomval

Language: PLPGSQL

	DECLARE
		intersects boolean := FALSE;
	BEGIN
		intersects := ST_Intersects(geomin, rast, band);
		IF intersects THEN
			-- Return the intersections of the geometry with the vectorized parts of
			-- the raster and the values associated with those parts, if really their
			-- intersection is not empty.
			RETURN QUERY
				SELECT
					intgeom,
					val
				FROM (
					SELECT
						ST_Intersection((gv).geom, geomin) AS intgeom,
						(gv).val
					FROM ST_DumpAsPolygons(rast, band) gv
					WHERE ST_Intersects((gv).geom, geomin)
				) foo
				WHERE NOT ST_IsEmpty(intgeom);
		ELSE
			-- If the geometry does not intersect with the raster, return an empty
			-- geometry and a null value
			RETURN QUERY
				SELECT
					emptygeom,
					NULL::float8
				FROM ST_GeomCollFromText('GEOMETRYCOLLECTION EMPTY', ST_SRID($1)) emptygeom;
		END IF;
	END;
	

Function: st_intersection(public.geography, public.geography)

Returns: geography

Language: SQL

args: geogA, geogB - (T) Returns a geometry that represents the shared portion of geomA and geomB. The geography implementation does a transform to geometry to do the intersection and then transform back to WGS84.

SELECT geography(ST_Transform(ST_Intersection(ST_Transform(geometry($1), _ST_BestSRID($1, $2)), ST_Transform(geometry($2), _ST_BestSRID($1, $2))), 4326))

Function: st_intersection(rast public.raster, band integer, geomin public.geometry)

Returns: SET OF geomval

Language: SQL

 SELECT st_intersection($3, $1, $2) 

Function: st_intersection(rast public.raster, geomin public.geometry)

Returns: SET OF geomval

Language: SQL

 SELECT st_intersection($2, $1, 1) 

Function: st_intersection(rast1 public.raster, band1 integer, rast2 public.raster, band2 integer, nodataval double precision)

Returns: raster

Language: SQL

 SELECT st_intersection($1, $2, $3, $4, 'BOTH', ARRAY[$5, $5]) 

Function: st_intersection(rast1 public.raster, band1 integer, rast2 public.raster, band2 integer, nodataval double precision[])

Returns: raster

Language: SQL

 SELECT st_intersection($1, $2, $3, $4, 'BOTH', $5) 

Function: st_intersection(rast1 public.raster, band1 integer, rast2 public.raster, band2 integer, returnband text, nodataval double precision)

Returns: raster

Language: SQL

 SELECT st_intersection($1, $2, $3, $4, $5, ARRAY[$6, $6]) 

Function: st_intersection(rast1 public.raster, band1 integer, rast2 public.raster, band2 integer, returnband text, nodataval double precision[])

Returns: raster

Language: PLPGSQL

	DECLARE
		rtn raster;
		_returnband text;
		newnodata1 float8;
		newnodata2 float8;
	BEGIN
		IF ST_SRID(rast1) != ST_SRID(rast2) THEN
			RAISE EXCEPTION 'The two rasters do not have the same SRID';
		END IF;

		newnodata1 := coalesce(nodataval[1], ST_BandNodataValue(rast1, band1), ST_MinPossibleValue(ST_BandPixelType(rast1, band1)));
		newnodata2 := coalesce(nodataval[2], ST_BandNodataValue(rast2, band2), ST_MinPossibleValue(ST_BandPixelType(rast2, band2)));
		
		_returnband := upper(returnband);

		rtn := NULL;
		CASE
			WHEN _returnband = 'BAND1' THEN
				rtn := ST_MapAlgebraExpr(rast1, band1, rast2, band2, '[rast1.val]', ST_BandPixelType(rast1, band1), 'INTERSECTION', newnodata1::text, newnodata1::text, newnodata1);
				rtn := ST_SetBandNodataValue(rtn, 1, newnodata1);
			WHEN _returnband = 'BAND2' THEN
				rtn := ST_MapAlgebraExpr(rast1, band1, rast2, band2, '[rast2.val]', ST_BandPixelType(rast2, band2), 'INTERSECTION', newnodata2::text, newnodata2::text, newnodata2);
				rtn := ST_SetBandNodataValue(rtn, 1, newnodata2);
			WHEN _returnband = 'BOTH' THEN
				rtn := ST_MapAlgebraExpr(rast1, band1, rast2, band2, '[rast1.val]', ST_BandPixelType(rast1, band1), 'INTERSECTION', newnodata1::text, newnodata1::text, newnodata1);
				rtn := ST_SetBandNodataValue(rtn, 1, newnodata1);
				rtn := ST_AddBand(rtn, ST_MapAlgebraExpr(rast1, band1, rast2, band2, '[rast2.val]', ST_BandPixelType(rast2, band2), 'INTERSECTION', newnodata2::text, newnodata2::text, newnodata2));
				rtn := ST_SetBandNodataValue(rtn, 2, newnodata2);
			ELSE
				RAISE EXCEPTION 'Unknown value provided for returnband: %', returnband;
				RETURN NULL;
		END CASE;

		RETURN rtn;
	END;
	

Function: st_intersection(rast1 public.raster, rast2 public.raster, nodataval double precision)

Returns: raster

Language: SQL

 SELECT st_intersection($1, 1, $2, 1, 'BOTH', ARRAY[$3, $3]) 

Function: st_intersection(rast1 public.raster, rast2 public.raster, nodataval double precision[])

Returns: raster

Language: SQL

 SELECT st_intersection($1, 1, $2, 1, 'BOTH', $3) 

Function: st_intersection(rast1 public.raster, rast2 public.raster, returnband text, nodataval double precision)

Returns: raster

Language: SQL

 SELECT st_intersection($1, 1, $2, 1, $3, ARRAY[$4, $4]) 

Function: st_intersection(rast1 public.raster, rast2 public.raster, returnband text, nodataval double precision[])

Returns: raster

Language: SQL

 SELECT st_intersection($1, 1, $2, 1, $3, $4) 

Function: st_intersection(text, text)

Returns: geometry

Language: SQL

 SELECT ST_Intersection($1::geometry, $2::geometry);  

Function: st_intersects(geom public.geometry, rast public.raster, nband integer)

Returns: boolean

Language: SQL

args: geommin, rast, nband=NULL - Return true if raster rastA spatially intersects raster rastB.

 SELECT $1 && $2::geometry AND _st_intersects($1, $2, $3); 

Function: st_intersects(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: geomA, geomB - Returns TRUE if the Geometries/Geography "spatially intersect in 2D" - (share any portion of space) and FALSE if they dont (they are Disjoint). For geography -- tolerance is 0.00001 meters (so any points that close are considered to intersect)

SELECT $1 && $2 AND _ST_Intersects($1,$2)

Function: st_intersects(public.geography, public.geography)

Returns: boolean

Language: SQL

args: geogA, geogB - Returns TRUE if the Geometries/Geography "spatially intersect in 2D" - (share any portion of space) and FALSE if they dont (they are Disjoint). For geography -- tolerance is 0.00001 meters (so any points that close are considered to intersect)

SELECT $1 && $2 AND _ST_Distance($1, $2, 0.0, false) < 0.00001

Function: st_intersects(rast public.raster, geom public.geometry, nband integer)

Returns: boolean

Language: SQL

args: rast, geommin, nband=NULL - Return true if raster rastA spatially intersects raster rastB.

 SELECT $1::geometry && $2 AND _st_intersects($2, $1, $3) 

Function: st_intersects(rast public.raster, nband integer, geom public.geometry)

Returns: boolean

Language: SQL

args: rast, nband, geommin - Return true if raster rastA spatially intersects raster rastB.

 SELECT $1::geometry && $3 AND _st_intersects($3, $1, $2) 

Function: st_intersects(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if raster rastA spatially intersects raster rastB.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_intersects(st_convexhull($1), st_convexhull($3)) ELSE _st_intersects($1, $2, $3, $4) END 

Function: st_intersects(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if raster rastA spatially intersects raster rastB.

 SELECT st_intersects($1, NULL::integer, $2, NULL::integer) 

Function: st_intersects(text, text)

Returns: boolean

Language: SQL

 SELECT ST_Intersects($1::geometry, $2::geometry);  

Function: st_invdistweight4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		ndims int;

		k double precision DEFAULT 1.;
		_k double precision DEFAULT 1.;
		z double precision[];
		d double precision[];
		_d double precision;
		z0 double precision;

		_z integer;
		x integer;
		y integer;

		cx integer;
		cy integer;
		cv double precision;
		cw double precision DEFAULT NULL;

		w integer;
		h integer;
		max_dx double precision;
		max_dy double precision;
	BEGIN
--		RAISE NOTICE 'value = %', value;
--		RAISE NOTICE 'userargs = %', userargs;

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		_z := array_lower(_value, 1);

		-- width and height (0-based)
		h := array_upper(_value, 2) - array_lower(_value, 2);
		w := array_upper(_value, 3) - array_lower(_value, 3);

		-- max distance from center pixel
		max_dx := w / 2;
		max_dy := h / 2;
--		RAISE NOTICE 'max_dx, max_dy = %, %', max_dx, max_dy;

		-- correct width and height (1-based)
		w := w + 1;
		h := h + 1;
--		RAISE NOTICE 'w, h = %, %', w, h;

		-- width and height should be odd numbers
		IF w % 2. != 1 THEN
			RAISE EXCEPTION 'Width of neighborhood array does not permit for a center pixel';
		END IF;
		IF h % 2. != 1 THEN
			RAISE EXCEPTION 'Height of neighborhood array does not permit for a center pixel';
		END IF;

		-- center pixel's coordinates
		cy := max_dy + array_lower(_value, 2);
		cx := max_dx + array_lower(_value, 3);
--		RAISE NOTICE 'cx, cy = %, %', cx, cy;

		-- if userargs provided, only use the first two args
		IF userargs IS NOT NULL AND array_ndims(userargs) = 1 THEN
			-- first arg is power factor
			k := userargs[array_lower(userargs, 1)]::double precision;
			IF k IS NULL THEN
				k := _k;
			ELSEIF k < 0. THEN
				RAISE NOTICE 'Power factor (< 0) must be between 0 and 1.  Defaulting to 0';
				k := 0.;
			ELSEIF k > 1. THEN
				RAISE NOTICE 'Power factor (> 1) must be between 0 and 1.  Defaulting to 1';
				k := 1.;
			END IF;

			-- second arg is what to do if center pixel has a value
			-- this will be a weight to apply for the center pixel
			IF array_length(userargs, 1) > 1 THEN
				cw := abs(userargs[array_lower(userargs, 1) + 1]::double precision);
				IF cw IS NOT NULL THEN
					IF cw < 0. THEN
						RAISE NOTICE 'Weight (< 0) of center pixel value must be between 0 and 1.  Defaulting to 0';
						cw := 0.;
					ELSEIF cw > 1 THEN
						RAISE NOTICE 'Weight (> 1) of center pixel value must be between 0 and 1.  Defaulting to 1';
						cw := 1.;
					END IF;
				END IF;
			END IF;
		END IF;
--		RAISE NOTICE 'k = %', k;
		k = abs(k) * -1;

		-- center pixel value
		cv := _value[_z][cy][cx];

		-- check to see if center pixel has value
--		RAISE NOTICE 'cw = %', cw;
		IF cw IS NULL AND cv IS NOT NULL THEN
			RETURN cv;
		END IF;

		FOR y IN array_lower(_value, 2)..array_upper(_value, 2) LOOP
			FOR x IN array_lower(_value, 3)..array_upper(_value, 3) LOOP
--				RAISE NOTICE 'value[%][%][%] = %', _z, y, x, _value[_z][y][x];

				-- skip NODATA values and center pixel
				IF _value[_z][y][x] IS NULL OR (x = cx AND y = cy) THEN
					CONTINUE;
				END IF;

				z := z || _value[_z][y][x];

				-- use pythagorean theorem
				_d := sqrt(power(cx - x, 2) + power(cy - y, 2));
--				RAISE NOTICE 'distance = %', _d;

				d := d || _d;
			END LOOP;
		END LOOP;
--		RAISE NOTICE 'z = %', z;
--		RAISE NOTICE 'd = %', d;

		-- neighborhood is NODATA
		IF z IS NULL OR array_length(z, 1) < 1 THEN
			-- center pixel has value
			IF cv IS NOT NULL THEN
				RETURN cv;
			ELSE
				RETURN NULL;
			END IF;
		END IF;

		z0 := 0;
		_d := 0;
		FOR x IN array_lower(z, 1)..array_upper(z, 1) LOOP
			d[x] := power(d[x], k);
			z[x] := z[x] * d[x];
			_d := _d + d[x];
			z0 := z0 + z[x];
		END LOOP;
		z0 := z0 / _d;
--		RAISE NOTICE 'z0 = %', z0;

		-- apply weight for center pixel if center pixel has value
		IF cv IS NOT NULL THEN
			z0 := (cw * cv) + ((1 - cw) * z0);
--			RAISE NOTICE '*z0 = %', z0;
		END IF;

		RETURN z0;
	END;
	

Function: st_isclosed(public.geometry)

Returns: boolean

Language: C

args: g - Returns TRUE if the LINESTRINGs start and end points are coincident. For Polyhedral surface is closed (volumetric).

LWGEOM_isclosed

Function: st_iscollection(public.geometry)

Returns: boolean

Language: C

args: g - Returns TRUE if the argument is a collection (MULTI*, GEOMETRYCOLLECTION, ...)

ST_IsCollection

Function: st_iscoveragetile(rast public.raster, coverage public.raster, tilewidth integer, tileheight integer)

Returns: boolean

Language: PLPGSQL

	DECLARE
		_rastmeta record;
		_covmeta record;
		cr record;
		max integer[];
		tile integer[];
		edge integer[];
	BEGIN
		IF NOT ST_SameAlignment(rast, coverage) THEN
			RAISE NOTICE 'Raster and coverage are not aligned';
			RETURN FALSE;
		END IF;

		_rastmeta := ST_Metadata(rast);
		_covmeta := ST_Metadata(coverage);

		-- get coverage grid coordinates of upper-left of rast
		cr := ST_WorldToRasterCoord(coverage, _rastmeta.upperleftx, _rastmeta.upperlefty);

		-- rast is not part of coverage
		IF
			(cr.columnx < 1 OR cr.columnx > _covmeta.width) OR
			(cr.rowy < 1 OR cr.rowy > _covmeta.height)
		THEN
			RAISE NOTICE 'Raster is not in the coverage';
			RETURN FALSE;
		END IF;

		-- rast isn't on the coverage's grid
		IF
			((cr.columnx - 1) % tilewidth != 0) OR
			((cr.rowy - 1) % tileheight != 0)
		THEN
			RAISE NOTICE 'Raster is not aligned to tile grid of coverage';
			RETURN FALSE;
		END IF;

		-- max # of tiles on X and Y for coverage
		max[0] := ceil(_covmeta.width::double precision / tilewidth::double precision)::integer;
		max[1] := ceil(_covmeta.height::double precision / tileheight::double precision)::integer;

		-- tile # of rast in coverge
		tile[0] := (cr.columnx / tilewidth) + 1;
		tile[1] := (cr.rowy / tileheight) + 1;

		-- inner tile
		IF tile[0] < max[0] AND tile[1] < max[1] THEN
			IF
				(_rastmeta.width != tilewidth) OR
				(_rastmeta.height != tileheight)
			THEN
				RAISE NOTICE 'Raster width/height is invalid for interior tile of coverage';
				RETURN FALSE;
			ELSE
				RETURN TRUE;
			END IF;
		END IF;

		-- edge tile

		-- edge tile may have same size as inner tile
		IF 
			(_rastmeta.width = tilewidth) AND
			(_rastmeta.height = tileheight)
		THEN
			RETURN TRUE;
		END IF;

		-- get edge tile width and height
		edge[0] := _covmeta.width - ((max[0] - 1) * tilewidth);
		edge[1] := _covmeta.height - ((max[1] - 1) * tileheight);

		-- edge tile not of expected tile size
		-- right and bottom
		IF tile[0] = max[0] AND tile[1] = max[1] THEN
			IF
				_rastmeta.width != edge[0] OR
				_rastmeta.height != edge[1]
			THEN
				RAISE NOTICE 'Raster width/height is invalid for right-most AND bottom-most tile of coverage';
				RETURN FALSE;
			END IF;
		ELSEIF tile[0] = max[0] THEN
			IF
				_rastmeta.width != edge[0] OR
				_rastmeta.height != tileheight
			THEN
				RAISE NOTICE 'Raster width/height is invalid for right-most tile of coverage';
				RETURN FALSE;
			END IF;
		ELSE
			IF
				_rastmeta.width != tilewidth OR
				_rastmeta.height != edge[1]
			THEN
				RAISE NOTICE 'Raster width/height is invalid for bottom-most tile of coverage';
				RETURN FALSE;
			END IF;
		END IF;

		RETURN TRUE;
	END;
	

Function: st_isempty(public.geometry)

Returns: boolean

Language: C

args: geomA - Returns true if this Geometry is an empty geometrycollection, polygon, point etc.

LWGEOM_isempty

Function: st_isempty(rast public.raster)

Returns: boolean

Language: C

args: rast - Returns true if the raster is empty (width = 0 and height = 0). Otherwise, returns false.

RASTER_isEmpty

Function: st_isring(public.geometry)

Returns: boolean

Language: C

args: g - Returns TRUE if this LINESTRING is both closed and simple.

isring

Function: st_issimple(public.geometry)

Returns: boolean

Language: C

args: geomA - Returns (TRUE) if this Geometry has no anomalous geometric points, such as self intersection or self tangency.

issimple

Function: st_isvalid(public.geometry)

Returns: boolean

Language: C

args: g - Returns true if the ST_Geometry is well formed.

isvalid

Function: st_isvalid(public.geometry, integer)

Returns: boolean

Language: SQL

args: g, flags - Returns true if the ST_Geometry is well formed.

SELECT (ST_isValidDetail($1, $2)).valid

Function: st_isvaliddetail(public.geometry)

Returns: valid_detail

Language: C

args: geom - Returns a valid_detail (valid,reason,location) row stating if a geometry is valid or not and if not valid, a reason why and a location where.

isvaliddetail

Function: st_isvaliddetail(public.geometry, integer)

Returns: valid_detail

Language: C

args: geom, flags - Returns a valid_detail (valid,reason,location) row stating if a geometry is valid or not and if not valid, a reason why and a location where.

isvaliddetail

Function: st_isvalidreason(public.geometry)

Returns: text

Language: C

args: geomA - Returns text stating if a geometry is valid or not and if not valid, a reason why.

isvalidreason

Function: st_isvalidreason(public.geometry, integer)

Returns: text

Language: SQL

args: geomA, flags - Returns text stating if a geometry is valid or not and if not valid, a reason why.

SELECT CASE WHEN valid THEN 'Valid Geometry' ELSE reason END FROM (
	SELECT (ST_isValidDetail($1, $2)).*
) foo
	

Function: st_length(geog public.geography, use_spheroid boolean)

Returns: double precision

Language: C

args: geog, use_spheroid=true - Returns the 2d length of the geometry if it is a linestring or multilinestring. geometry are in units of spatial reference and geography are in meters (default spheroid)

geography_length

Function: st_length(public.geometry)

Returns: double precision

Language: C

args: a_2dlinestring - Returns the 2d length of the geometry if it is a linestring or multilinestring. geometry are in units of spatial reference and geography are in meters (default spheroid)

LWGEOM_length2d_linestring

Function: st_length(text)

Returns: double precision

Language: SQL

 SELECT ST_Length($1::geometry);  

Function: st_length2d(public.geometry)

Returns: double precision

Language: C

args: a_2dlinestring - Returns the 2-dimensional length of the geometry if it is a linestring or multi-linestring. This is an alias for ST_Length

LWGEOM_length2d_linestring

Function: st_length2d_spheroid(public.geometry, public.spheroid)

Returns: double precision

Language: C

args: a_linestring, a_spheroid - Calculates the 2D length of a linestring/multilinestring on an ellipsoid. This is useful if the coordinates of the geometry are in longitude/latitude and a length is desired without reprojection.

LWGEOM_length2d_ellipsoid

Function: st_length_spheroid(public.geometry, public.spheroid)

Returns: double precision

Language: C

args: a_linestring, a_spheroid - Calculates the 2D or 3D length of a linestring/multilinestring on an ellipsoid. This is useful if the coordinates of the geometry are in longitude/latitude and a length is desired without reprojection.

LWGEOM_length_ellipsoid_linestring

Function: st_line_interpolate_point(public.geometry, double precision)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Line_Interpolate_Point', 'ST_LineInterpolatePoint', '2.1.0');
    SELECT ST_LineInterpolatePoint($1, $2);
  

Function: st_line_locate_point(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: SQL

 SELECT _postgis_deprecate('ST_Line_Locate_Point', 'ST_LineLocatePoint', '2.1.0');
     SELECT ST_LineLocatePoint($1, $2);
  

Function: st_line_substring(public.geometry, double precision, double precision)

Returns: geometry

Language: SQL

 SELECT _postgis_deprecate('ST_Line_Substring', 'ST_LineSubstring', '2.1.0');
     SELECT ST_LineSubstring($1, $2, $3);
  

Function: st_linecrossingdirection(geom1 public.geometry, geom2 public.geometry)

Returns: integer

Language: SQL

args: linestringA, linestringB - Given 2 linestrings, returns a number between -3 and 3 denoting what kind of crossing behavior. 0 is no crossing.

 SELECT CASE WHEN NOT $1 && $2 THEN 0 ELSE _ST_LineCrossingDirection($1,$2) END 

Function: st_linefrommultipoint(public.geometry)

Returns: geometry

Language: C

args: aMultiPoint - Creates a LineString from a MultiPoint geometry.

LWGEOM_line_from_mpoint

Function: st_linefromtext(text)

Returns: geometry

Language: SQL

args: WKT - Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to 0.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'LINESTRING'
	THEN ST_GeomFromText($1)
	ELSE NULL END
	

Function: st_linefromtext(text, integer)

Returns: geometry

Language: SQL

args: WKT, srid - Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to 0.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'LINESTRING'
	THEN ST_GeomFromText($1,$2)
	ELSE NULL END
	

Function: st_linefromwkb(bytea)

Returns: geometry

Language: SQL

args: WKB - Makes a LINESTRING from WKB with the given SRID

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'LINESTRING'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_linefromwkb(bytea, integer)

Returns: geometry

Language: SQL

args: WKB, srid - Makes a LINESTRING from WKB with the given SRID

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'LINESTRING'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_lineinterpolatepoint(public.geometry, double precision)

Returns: geometry

Language: C

args: a_linestring, a_fraction - Returns a point interpolated along a line. Second argument is a float8 between 0 and 1 representing fraction of total length of linestring the point has to be located.

LWGEOM_line_interpolate_point

Function: st_linelocatepoint(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: C

args: a_linestring, a_point - Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point, as a fraction of total 2d line length.

LWGEOM_line_locate_point

Function: st_linemerge(public.geometry)

Returns: geometry

Language: C

args: amultilinestring - Returns a (set of) LineString(s) formed by sewing together a MULTILINESTRING.

linemerge

Function: st_linestringfromwkb(bytea)

Returns: geometry

Language: SQL

args: WKB - Makes a geometry from WKB with the given SRID.

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'LINESTRING'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_linestringfromwkb(bytea, integer)

Returns: geometry

Language: SQL

args: WKB, srid - Makes a geometry from WKB with the given SRID.

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'LINESTRING'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_linesubstring(public.geometry, double precision, double precision)

Returns: geometry

Language: C

args: a_linestring, startfraction, endfraction - Return a linestring being a substring of the input one starting and ending at the given fractions of total 2d length. Second and third arguments are float8 values between 0 and 1.

LWGEOM_line_substring

Function: st_linetocurve(geometry public.geometry)

Returns: geometry

Language: C

args: geomANoncircular - Converts a LINESTRING/POLYGON to a CIRCULARSTRING, CURVED POLYGON

LWGEOM_line_desegmentize

Function: st_locate_along_measure(public.geometry, double precision)

Returns: geometry

Language: SQL

 SELECT ST_locate_between_measures($1, $2, $2) 

Function: st_locate_between_measures(public.geometry, double precision, double precision)

Returns: geometry

Language: C

LWGEOM_locate_between_m

Function: st_locatealong(geometry public.geometry, measure double precision, leftrightoffset double precision)

Returns: geometry

Language: C

args: ageom_with_measure, a_measure, offset - Return a derived geometry collection value with elements that match the specified measure. Polygonal elements are not supported.

ST_LocateAlong

Function: st_locatebetween(geometry public.geometry, frommeasure double precision, tomeasure double precision, leftrightoffset double precision)

Returns: geometry

Language: C

args: geomA, measure_start, measure_end, offset - Return a derived geometry collection value with elements that match the specified range of measures inclusively. Polygonal elements are not supported.

ST_LocateBetween

Function: st_locatebetweenelevations(geometry public.geometry, fromelevation double precision, toelevation double precision)

Returns: geometry

Language: C

args: geom_mline, elevation_start, elevation_end - Return a derived geometry (collection) value with elements that intersect the specified range of elevations inclusively. Only 3D, 4D LINESTRINGS and MULTILINESTRINGS are supported.

ST_LocateBetweenElevations

Function: st_longestline(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: SQL

args: g1, g2 - Returns the 2-dimensional longest line points of two geometries. The function will only return the first longest line if more than one, that the function finds. The line returned will always start in g1 and end in g2. The length of the line this function returns will always be the same as st_maxdistance returns for g1 and g2.

SELECT _ST_LongestLine(ST_ConvexHull($1), ST_ConvexHull($2))

Function: st_m(public.geometry)

Returns: double precision

Language: C

args: a_point - Return the M coordinate of the point, or NULL if not available. Input must be a point.

LWGEOM_m_point

Function: st_makebox2d(geom1 public.geometry, geom2 public.geometry)

Returns: box2d

Language: C

args: pointLowLeft, pointUpRight - Creates a BOX2D defined by the given point geometries.

BOX2D_construct

Function: st_makeemptyraster(rast public.raster)

Returns: raster

Language: PLPGSQL

args: rast - Returns an empty raster (having no bands) of given dimensions (width & height), upperleft X and Y, pixel size and rotation (scalex, scaley, skewx & skewy) and reference system (srid). If a raster is passed in, returns a new raster with the same size, alignment and SRID. If srid is left out, the spatial ref is set to unknown (0).

		DECLARE
			w int;
			h int;
			ul_x double precision;
			ul_y double precision;
			scale_x double precision;
			scale_y double precision;
			skew_x double precision;
			skew_y double precision;
			sr_id int;
		BEGIN
			SELECT width, height, upperleftx, upperlefty, scalex, scaley, skewx, skewy, srid INTO w, h, ul_x, ul_y, scale_x, scale_y, skew_x, skew_y, sr_id FROM ST_Metadata(rast);
			RETURN st_makeemptyraster(w, h, ul_x, ul_y, scale_x, scale_y, skew_x, skew_y, sr_id);
		END;
    

Function: st_makeemptyraster(width integer, height integer, upperleftx double precision, upperlefty double precision, pixelsize double precision)

Returns: raster

Language: SQL

args: width, height, upperleftx, upperlefty, pixelsize - Returns an empty raster (having no bands) of given dimensions (width & height), upperleft X and Y, pixel size and rotation (scalex, scaley, skewx & skewy) and reference system (srid). If a raster is passed in, returns a new raster with the same size, alignment and SRID. If srid is left out, the spatial ref is set to unknown (0).

 SELECT st_makeemptyraster($1, $2, $3, $4, $5, -($5), 0, 0, ST_SRID('POINT(0 0)'::geometry)) 

Function: st_makeemptyraster(width integer, height integer, upperleftx double precision, upperlefty double precision, scalex double precision, scaley double precision, skewx double precision, skewy double precision, srid integer)

Returns: raster

Language: C

args: width, height, upperleftx, upperlefty, scalex, scaley, skewx, skewy, srid=unknown - Returns an empty raster (having no bands) of given dimensions (width & height), upperleft X and Y, pixel size and rotation (scalex, scaley, skewx & skewy) and reference system (srid). If a raster is passed in, returns a new raster with the same size, alignment and SRID. If srid is left out, the spatial ref is set to unknown (0).

RASTER_makeEmpty

Function: st_makeenvelope(double precision, double precision, double precision, double precision, integer)

Returns: geometry

Language: C

args: xmin, ymin, xmax, ymax, srid=unknown - Creates a rectangular Polygon formed from the given minimums and maximums. Input values must be in SRS specified by the SRID.

ST_MakeEnvelope

Function: st_makeline(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: geom1, geom2 - Creates a Linestring from point or line geometries.

LWGEOM_makeline

Function: st_makeline(public.geometry)

Returns: geometry

Language: INTERNAL

args: geoms - Creates a Linestring from point or line geometries.

aggregate_dummy

Function: st_makeline(public.geometry[])

Returns: geometry

Language: C

args: geoms_array - Creates a Linestring from point or line geometries.

LWGEOM_makeline_garray

Function: st_makepoint(double precision, double precision)

Returns: geometry

Language: C

args: x, y - Creates a 2D,3DZ or 4D point geometry.

LWGEOM_makepoint

Function: st_makepoint(double precision, double precision, double precision)

Returns: geometry

Language: C

args: x, y, z - Creates a 2D,3DZ or 4D point geometry.

LWGEOM_makepoint

Function: st_makepoint(double precision, double precision, double precision, double precision)

Returns: geometry

Language: C

args: x, y, z, m - Creates a 2D,3DZ or 4D point geometry.

LWGEOM_makepoint

Function: st_makepointm(double precision, double precision, double precision)

Returns: geometry

Language: C

args: x, y, m - Creates a point geometry with an x y and m coordinate.

LWGEOM_makepoint3dm

Function: st_makepolygon(public.geometry)

Returns: geometry

Language: C

args: linestring - Creates a Polygon formed by the given shell. Input geometries must be closed LINESTRINGS.

LWGEOM_makepoly

Function: st_makepolygon(public.geometry, public.geometry[])

Returns: geometry

Language: C

args: outerlinestring, interiorlinestrings - Creates a Polygon formed by the given shell. Input geometries must be closed LINESTRINGS.

LWGEOM_makepoly

Function: st_makevalid(public.geometry)

Returns: geometry

Language: C

args: input - Attempts to make an invalid geometry valid without losing vertices.

ST_MakeValid

Function: st_mapalgebra(rast public.raster, nband integer, callbackfunc regprocedure, pixeltype text, extenttype text, customextent public.raster, distancex integer, distancey integer, userargs text[])

Returns: raster

Language: SQL

 SELECT _ST_MapAlgebra(ARRAY[ROW($1, $2)]::rastbandarg[], $3, $4, $7, $8, $5, $6, VARIADIC $9) 

Function: st_mapalgebra(rast public.raster, nband integer, pixeltype text, expression text, nodataval double precision)

Returns: raster

Language: SQL

 SELECT _st_mapalgebra(ARRAY[ROW($1, $2)]::rastbandarg[], $4, $3, 'FIRST', $5::text) 

Function: st_mapalgebra(rast public.raster, nband integer[], callbackfunc regprocedure, pixeltype text, extenttype text, customextent public.raster, distancex integer, distancey integer, userargs text[])

Returns: raster

Language: PLPGSQL

	DECLARE
		x int;
		argset rastbandarg[];
	BEGIN
		IF $2 IS NULL OR array_ndims($2) < 1 OR array_length($2, 1) < 1 THEN
			RAISE EXCEPTION 'Populated 1D array must be provided for nband';
			RETURN NULL;
		END IF;

		FOR x IN array_lower($2, 1)..array_upper($2, 1) LOOP
			IF $2[x] IS NULL THEN
				CONTINUE;
			END IF;

			argset := argset || ROW($1, $2[x])::rastbandarg;
		END LOOP;

		IF array_length(argset, 1) < 1 THEN
			RAISE EXCEPTION 'Populated 1D array must be provided for nband';
			RETURN NULL;
		END IF;

		RETURN _ST_MapAlgebra(argset, $3, $4, $7, $8, $5, $6, VARIADIC $9);
	END;
	

Function: st_mapalgebra(rast public.raster, pixeltype text, expression text, nodataval double precision)

Returns: raster

Language: SQL

 SELECT st_mapalgebra($1, 1, $2, $3, $4) 

Function: st_mapalgebra(rast1 public.raster, band1 integer, rast2 public.raster, band2 integer, expression text, pixeltype text, extenttype text, nodata1expr text, nodata2expr text, nodatanodataval double precision)

Returns: raster

Language: SQL

 SELECT _st_mapalgebra(ARRAY[ROW($1, $2), ROW($3, $4)]::rastbandarg[], $5, $6, $7, $8, $9, $10) 

Function: st_mapalgebra(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer, callbackfunc regprocedure, pixeltype text, extenttype text, customextent public.raster, distancex integer, distancey integer, userargs text[])

Returns: raster

Language: SQL

 SELECT _ST_MapAlgebra(ARRAY[ROW($1, $2), ROW($3, $4)]::rastbandarg[], $5, $6, $9, $10, $7, $8, VARIADIC $11) 

Function: st_mapalgebra(rast1 public.raster, rast2 public.raster, expression text, pixeltype text, extenttype text, nodata1expr text, nodata2expr text, nodatanodataval double precision)

Returns: raster

Language: SQL

 SELECT st_mapalgebra($1, 1, $2, 1, $3, $4, $5, $6, $7, $8) 

Function: st_mapalgebra(rastbandargset public.rastbandarg[], callbackfunc regprocedure, pixeltype text, extenttype text, customextent public.raster, distancex integer, distancey integer, userargs text[])

Returns: raster

Language: SQL

 SELECT _ST_MapAlgebra($1, $2, $3, $6, $7, $4, $5, VARIADIC $8) 

Function: st_mapalgebraexpr(rast public.raster, band integer, pixeltype text, expression text, nodataval double precision)

Returns: raster

Language: C

RASTER_mapAlgebraExpr

Function: st_mapalgebraexpr(rast public.raster, pixeltype text, expression text, nodataval double precision)

Returns: raster

Language: SQL

 SELECT st_mapalgebraexpr($1, 1, $2, $3, $4) 

Function: st_mapalgebraexpr(rast1 public.raster, band1 integer, rast2 public.raster, band2 integer, expression text, pixeltype text, extenttype text, nodata1expr text, nodata2expr text, nodatanodataval double precision)

Returns: raster

Language: C

RASTER_mapAlgebra2

Function: st_mapalgebraexpr(rast1 public.raster, rast2 public.raster, expression text, pixeltype text, extenttype text, nodata1expr text, nodata2expr text, nodatanodataval double precision)

Returns: raster

Language: SQL

 SELECT st_mapalgebraexpr($1, 1, $2, 1, $3, $4, $5, $6, $7, $8) 

Function: st_mapalgebrafct(rast public.raster, band integer, onerastuserfunc regprocedure)

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, $2, NULL, $3, NULL) 

Function: st_mapalgebrafct(rast public.raster, band integer, onerastuserfunc regprocedure, args text[])

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, $2, NULL, $3, VARIADIC $4) 

Function: st_mapalgebrafct(rast public.raster, band integer, pixeltype text, onerastuserfunc regprocedure)

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, $2, $3, $4, NULL) 

Function: st_mapalgebrafct(rast public.raster, band integer, pixeltype text, onerastuserfunc regprocedure, args text[])

Returns: raster

Language: C

RASTER_mapAlgebraFct

Function: st_mapalgebrafct(rast public.raster, onerastuserfunc regprocedure)

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, 1, NULL, $2, NULL) 

Function: st_mapalgebrafct(rast public.raster, onerastuserfunc regprocedure, args text[])

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, 1, NULL, $2, VARIADIC $3) 

Function: st_mapalgebrafct(rast public.raster, pixeltype text, onerastuserfunc regprocedure)

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, 1, $2, $3, NULL) 

Function: st_mapalgebrafct(rast public.raster, pixeltype text, onerastuserfunc regprocedure, args text[])

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, 1, $2, $3, VARIADIC $4) 

Function: st_mapalgebrafct(rast1 public.raster, band1 integer, rast2 public.raster, band2 integer, tworastuserfunc regprocedure, pixeltype text, extenttype text, userargs text[])

Returns: raster

Language: C

RASTER_mapAlgebra2

Function: st_mapalgebrafct(rast1 public.raster, rast2 public.raster, tworastuserfunc regprocedure, pixeltype text, extenttype text, userargs text[])

Returns: raster

Language: SQL

 SELECT st_mapalgebrafct($1, 1, $2, 1, $3, $4, $5, VARIADIC $6) 

Function: st_mapalgebrafctngb(rast public.raster, band integer, pixeltype text, ngbwidth integer, ngbheight integer, onerastngbuserfunc regprocedure, nodatamode text, args text[])

Returns: raster

Language: C

RASTER_mapAlgebraFctNgb

Function: st_max4ma(matrix double precision[], nodatamode text, args text[])

Returns: double precision

Language: PLPGSQL

    DECLARE
        _matrix float[][];
        max float;
    BEGIN
        _matrix := matrix;
        max := '-Infinity'::float;
        FOR x in array_lower(_matrix, 1)..array_upper(_matrix, 1) LOOP
            FOR y in array_lower(_matrix, 2)..array_upper(_matrix, 2) LOOP
                IF _matrix[x][y] IS NULL THEN
                    IF NOT nodatamode = 'ignore' THEN
                        _matrix[x][y] := nodatamode::float;
                    END IF;
                END IF;
                IF max < _matrix[x][y] THEN
                    max := _matrix[x][y];
                END IF;
            END LOOP;
        END LOOP;
        RETURN max;
    END;
    

Function: st_max4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		max double precision;
		x int;
		y int;
		z int;
		ndims int;
	BEGIN
		max := '-Infinity'::double precision;

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- raster
		FOR z IN array_lower(_value, 1)..array_upper(_value, 1) LOOP
			-- row
			FOR y IN array_lower(_value, 2)..array_upper(_value, 2) LOOP
				-- column
				FOR x IN array_lower(_value, 3)..array_upper(_value, 3) LOOP
					IF _value[z][y][x] IS NULL THEN
						IF array_length(userargs, 1) > 0 THEN
							_value[z][y][x] = userargs[array_lower(userargs, 1)]::double precision;
						ELSE
							CONTINUE;
						END IF;
					END IF;

					IF _value[z][y][x] > max THEN
						max := _value[z][y][x];
					END IF;
				END LOOP;
			END LOOP;
		END LOOP;

		IF max = '-Infinity'::double precision THEN
			RETURN NULL;
		END IF;

		RETURN max;
	END;
	

Function: st_maxdistance(geom1 public.geometry, geom2 public.geometry)

Returns: double precision

Language: SQL

args: g1, g2 - Returns the 2-dimensional largest distance between two geometries in projected units.

SELECT _ST_MaxDistance(ST_ConvexHull($1), ST_ConvexHull($2))

Function: st_mean4ma(matrix double precision[], nodatamode text, args text[])

Returns: double precision

Language: PLPGSQL

    DECLARE
        _matrix float[][];
        sum float;
        count float;
    BEGIN
        _matrix := matrix;
        sum := 0;
        count := 0;
        FOR x in array_lower(matrix, 1)..array_upper(matrix, 1) LOOP
            FOR y in array_lower(matrix, 2)..array_upper(matrix, 2) LOOP
                IF _matrix[x][y] IS NULL THEN
                    IF nodatamode = 'ignore' THEN
                        _matrix[x][y] := 0;
                    ELSE
                        _matrix[x][y] := nodatamode::float;
                        count := count + 1;
                    END IF;
                ELSE
                    count := count + 1;
                END IF;
                sum := sum + _matrix[x][y];
            END LOOP;
        END LOOP;
        IF count = 0 THEN
            RETURN NULL;
        END IF;
        RETURN sum / count;
    END;
    

Function: st_mean4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		sum double precision;
		count int;
		x int;
		y int;
		z int;
		ndims int;
	BEGIN
		sum := 0;
		count := 0;

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- raster
		FOR z IN array_lower(_value, 1)..array_upper(_value, 1) LOOP
			-- row
			FOR y IN array_lower(_value, 2)..array_upper(_value, 2) LOOP
				-- column
				FOR x IN array_lower(_value, 3)..array_upper(_value, 3) LOOP
					IF _value[z][y][x] IS NULL THEN
						IF array_length(userargs, 1) > 0 THEN
							_value[z][y][x] = userargs[array_lower(userargs, 1)]::double precision;
						ELSE
							CONTINUE;
						END IF;
					END IF;

					sum := sum + _value[z][y][x];
					count := count + 1;
				END LOOP;
			END LOOP;
		END LOOP;

		IF count < 1 THEN
			RETURN NULL;
		END IF;

		RETURN sum / count::double precision;
	END;
	

Function: st_mem_size(public.geometry)

Returns: integer

Language: C

args: geomA - Returns the amount of space (in bytes) the geometry takes.

LWGEOM_mem_size

Function: st_memcollect(public.geometry)

Returns: geometry

Language: INTERNAL

aggregate_dummy

Function: st_memunion(public.geometry)

Returns: geometry

Language: INTERNAL

args: geomfield - Same as ST_Union, only memory-friendly (uses less memory and more processor time).

aggregate_dummy

Function: st_metadata(rast public.raster)

Returns: record

Language: C

args: rast - Returns basic meta data about a raster object such as pixel size, rotation (skew), upper, lower left, etc.

RASTER_metadata

Function: st_min4ma(matrix double precision[], nodatamode text, args text[])

Returns: double precision

Language: PLPGSQL

    DECLARE
        _matrix float[][];
        min float;
    BEGIN
        _matrix := matrix;
        min := 'Infinity'::float;
        FOR x in array_lower(_matrix, 1)..array_upper(_matrix, 1) LOOP
            FOR y in array_lower(_matrix, 2)..array_upper(_matrix, 2) LOOP
                IF _matrix[x][y] IS NULL THEN
                    IF NOT nodatamode = 'ignore' THEN
                        _matrix[x][y] := nodatamode::float;
                    END IF;
                END IF;
                IF min > _matrix[x][y] THEN
                    min := _matrix[x][y];
                END IF;
            END LOOP;
        END LOOP;
        RETURN min;
    END;
    

Function: st_min4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		min double precision;
		x int;
		y int;
		z int;
		ndims int;
	BEGIN
		min := 'Infinity'::double precision;

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- raster
		FOR z IN array_lower(_value, 1)..array_upper(_value, 1) LOOP
			-- row
			FOR y IN array_lower(_value, 2)..array_upper(_value, 2) LOOP
				-- column
				FOR x IN array_lower(_value, 3)..array_upper(_value, 3) LOOP
					IF _value[z][y][x] IS NULL THEN
						IF array_length(userargs, 1) > 0 THEN
							_value[z][y][x] = userargs[array_lower(userargs, 1)]::double precision;
						ELSE
							CONTINUE;
						END IF;
					END IF;

					IF _value[z][y][x] < min THEN
						min := _value[z][y][x];
					END IF;
				END LOOP;
			END LOOP;
		END LOOP;

		IF min = 'Infinity'::double precision THEN
			RETURN NULL;
		END IF;

		RETURN min;
	END;
	

Function: st_minconvexhull(rast public.raster, nband integer)

Returns: geometry

Language: C

RASTER_convex_hull

Function: st_mindist4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		ndims int;

		d double precision DEFAULT NULL;
		_d double precision;

		z integer;
		x integer;
		y integer;

		cx integer;
		cy integer;
		cv double precision;

		w integer;
		h integer;
		max_dx double precision;
		max_dy double precision;
	BEGIN

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- only use the first raster passed to this function
		IF array_length(_value, 1) > 1 THEN
			RAISE NOTICE 'Only using the values from the first raster';
		END IF;
		z := array_lower(_value, 1);

		-- width and height (0-based)
		h := array_upper(_value, 2) - array_lower(_value, 2);
		w := array_upper(_value, 3) - array_lower(_value, 3);

		-- max distance from center pixel
		max_dx := w / 2;
		max_dy := h / 2;

		-- correct width and height (1-based)
		w := w + 1;
		h := h + 1;

		-- width and height should be odd numbers
		IF w % 2. != 1 THEN
			RAISE EXCEPTION 'Width of neighborhood array does not permit for a center pixel';
		END IF;
		IF h % 2. != 1 THEN
			RAISE EXCEPTION 'Height of neighborhood array does not permit for a center pixel';
		END IF;

		-- center pixel's coordinates
		cy := max_dy + array_lower(_value, 2);
		cx := max_dx + array_lower(_value, 3);

		-- center pixel value
		cv := _value[z][cy][cx];

		-- check to see if center pixel has value
		IF cv IS NOT NULL THEN
			RETURN 0.;
		END IF;

		FOR y IN array_lower(_value, 2)..array_upper(_value, 2) LOOP
			FOR x IN array_lower(_value, 3)..array_upper(_value, 3) LOOP

				-- skip NODATA values and center pixel
				IF _value[z][y][x] IS NULL OR (x = cx AND y = cy) THEN
					CONTINUE;
				END IF;

				-- use pythagorean theorem
				_d := sqrt(power(cx - x, 2) + power(cy - y, 2));
--				RAISE NOTICE 'distance = %', _d;

				IF d IS NULL OR _d < d THEN
					d := _d;
				END IF;
			END LOOP;
		END LOOP;
--		RAISE NOTICE 'd = %', d;

		RETURN d;
	END;
	

Function: st_minimumboundingcircle(inputgeom public.geometry, segs_per_quarter integer)

Returns: geometry

Language: PLPGSQL

args: geomA, num_segs_per_qt_circ=48 - Returns the smallest circle polygon that can fully contain a geometry. Default uses 48 segments per quarter circle.

	DECLARE
	hull GEOMETRY;
	ring GEOMETRY;
	center GEOMETRY;
	radius DOUBLE PRECISION;
	dist DOUBLE PRECISION;
	d DOUBLE PRECISION;
	idx1 integer;
	idx2 integer;
	l1 GEOMETRY;
	l2 GEOMETRY;
	p1 GEOMETRY;
	p2 GEOMETRY;
	a1 DOUBLE PRECISION;
	a2 DOUBLE PRECISION;


	BEGIN

	-- First compute the ConvexHull of the geometry
	hull = ST_ConvexHull(inputgeom);
	--A point really has no MBC
	IF ST_GeometryType(hull) = 'ST_Point' THEN
		RETURN hull;
	END IF;
	-- convert the hull perimeter to a linestring so we can manipulate individual points
	--If its already a linestring force it to a closed linestring
	ring = CASE WHEN ST_GeometryType(hull) = 'ST_LineString' THEN ST_AddPoint(hull, ST_StartPoint(hull)) ELSE ST_ExteriorRing(hull) END;

	dist = 0;
	-- Brute Force - check every pair
	FOR i in 1 .. (ST_NumPoints(ring)-2)
		LOOP
			FOR j in i .. (ST_NumPoints(ring)-1)
				LOOP
				d = ST_Distance(ST_PointN(ring,i),ST_PointN(ring,j));
				-- Check the distance and update if larger
				IF (d > dist) THEN
					dist = d;
					idx1 = i;
					idx2 = j;
				END IF;
			END LOOP;
		END LOOP;

	-- We now have the diameter of the convex hull.  The following line returns it if desired.
	-- RETURN ST_MakeLine(ST_PointN(ring,idx1),ST_PointN(ring,idx2));

	-- Now for the Minimum Bounding Circle.  Since we know the two points furthest from each
	-- other, the MBC must go through those two points. Start with those points as a diameter of a circle.

	-- The radius is half the distance between them and the center is midway between them
	radius = ST_Distance(ST_PointN(ring,idx1),ST_PointN(ring,idx2)) / 2.0;
	center = ST_LineInterpolatePoint(ST_MakeLine(ST_PointN(ring,idx1),ST_PointN(ring,idx2)),0.5);

	-- Loop through each vertex and check if the distance from the center to the point
	-- is greater than the current radius.
	FOR k in 1 .. (ST_NumPoints(ring)-1)
		LOOP
		IF(k <> idx1 and k <> idx2) THEN
			dist = ST_Distance(center,ST_PointN(ring,k));
			IF (dist > radius) THEN
				-- We have to expand the circle.  The new circle must pass trhough
				-- three points - the two original diameters and this point.

				-- Draw a line from the first diameter to this point
				l1 = ST_Makeline(ST_PointN(ring,idx1),ST_PointN(ring,k));
				-- Compute the midpoint
				p1 = ST_LineInterpolatePoint(l1,0.5);
				-- Rotate the line 90 degrees around the midpoint (perpendicular bisector)
				l1 = ST_Rotate(l1,pi()/2,p1);
				--  Compute the azimuth of the bisector
				a1 = ST_Azimuth(ST_PointN(l1,1),ST_PointN(l1,2));
				--  Extend the line in each direction the new computed distance to insure they will intersect
				l1 = ST_AddPoint(l1,ST_Makepoint(ST_X(ST_PointN(l1,2))+sin(a1)*dist,ST_Y(ST_PointN(l1,2))+cos(a1)*dist),-1);
				l1 = ST_AddPoint(l1,ST_Makepoint(ST_X(ST_PointN(l1,1))-sin(a1)*dist,ST_Y(ST_PointN(l1,1))-cos(a1)*dist),0);

				-- Repeat for the line from the point to the other diameter point
				l2 = ST_Makeline(ST_PointN(ring,idx2),ST_PointN(ring,k));
				p2 = ST_LineInterpolatePoint(l2,0.5);
				l2 = ST_Rotate(l2,pi()/2,p2);
				a2 = ST_Azimuth(ST_PointN(l2,1),ST_PointN(l2,2));
				l2 = ST_AddPoint(l2,ST_Makepoint(ST_X(ST_PointN(l2,2))+sin(a2)*dist,ST_Y(ST_PointN(l2,2))+cos(a2)*dist),-1);
				l2 = ST_AddPoint(l2,ST_Makepoint(ST_X(ST_PointN(l2,1))-sin(a2)*dist,ST_Y(ST_PointN(l2,1))-cos(a2)*dist),0);

				-- The new center is the intersection of the two bisectors
				center = ST_Intersection(l1,l2);
				-- The new radius is the distance to any of the three points
				radius = ST_Distance(center,ST_PointN(ring,idx1));
			END IF;
		END IF;
		END LOOP;
	--DONE!!  Return the MBC via the buffer command
	RETURN ST_Buffer(center,radius,segs_per_quarter);

	END;

Function: st_minpossiblevalue(pixeltype text)

Returns: double precision

Language: C

RASTER_minPossibleValue

Function: st_mlinefromtext(text)

Returns: geometry

Language: SQL

args: WKT - Return a specified ST_MultiLineString value from WKT representation.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTILINESTRING'
	THEN ST_GeomFromText($1)
	ELSE NULL END
	

Function: st_mlinefromtext(text, integer)

Returns: geometry

Language: SQL

args: WKT, srid - Return a specified ST_MultiLineString value from WKT representation.

	SELECT CASE
	WHEN geometrytype(ST_GeomFromText($1, $2)) = 'MULTILINESTRING'
	THEN ST_GeomFromText($1,$2)
	ELSE NULL END
	

Function: st_mlinefromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTILINESTRING'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_mlinefromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTILINESTRING'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_mpointfromtext(text)

Returns: geometry

Language: SQL

args: WKT - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTIPOINT'
	THEN ST_GeomFromText($1)
	ELSE NULL END
	

Function: st_mpointfromtext(text, integer)

Returns: geometry

Language: SQL

args: WKT, srid - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'MULTIPOINT'
	THEN ST_GeomFromText($1, $2)
	ELSE NULL END
	

Function: st_mpointfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOINT'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_mpointfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTIPOINT'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_mpolyfromtext(text)

Returns: geometry

Language: SQL

args: WKT - Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTIPOLYGON'
	THEN ST_GeomFromText($1)
	ELSE NULL END
	

Function: st_mpolyfromtext(text, integer)

Returns: geometry

Language: SQL

args: WKT, srid - Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'MULTIPOLYGON'
	THEN ST_GeomFromText($1,$2)
	ELSE NULL END
	

Function: st_mpolyfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOLYGON'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_mpolyfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTIPOLYGON'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_multi(public.geometry)

Returns: geometry

Language: C

args: g1 - Returns the geometry as a MULTI* geometry. If the geometry is already a MULTI*, it is returned unchanged.

LWGEOM_force_multi

Function: st_multilinefromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTILINESTRING'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_multilinestringfromtext(text)

Returns: geometry

Language: SQL

SELECT ST_MLineFromText($1)

Function: st_multilinestringfromtext(text, integer)

Returns: geometry

Language: SQL

SELECT ST_MLineFromText($1, $2)

Function: st_multipointfromtext(text)

Returns: geometry

Language: SQL

SELECT ST_MPointFromText($1)

Function: st_multipointfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOINT'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_multipointfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = 'MULTIPOINT'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_multipolyfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOLYGON'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_multipolyfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTIPOLYGON'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_multipolygonfromtext(text)

Returns: geometry

Language: SQL

SELECT ST_MPolyFromText($1)

Function: st_multipolygonfromtext(text, integer)

Returns: geometry

Language: SQL

SELECT ST_MPolyFromText($1, $2)

Function: st_ndims(public.geometry)

Returns: smallint

Language: C

args: g1 - Returns coordinate dimension of the geometry as a small int. Values are: 2,3 or 4.

LWGEOM_ndims

Function: st_nearestvalue(rast public.raster, band integer, columnx integer, rowy integer, exclude_nodata_value boolean)

Returns: double precision

Language: SQL

args: rast, bandnum, columnx, rowy, exclude_nodata_value=true - Returns the nearest non-NODATA value of a given bands pixel specified by a columnx and rowy or a geometric point expressed in the same spatial reference coordinate system as the raster.

 SELECT st_nearestvalue($1, $2, st_setsrid(st_makepoint(st_rastertoworldcoordx($1, $3, $4), st_rastertoworldcoordy($1, $3, $4)), st_srid($1)), $5) 

Function: st_nearestvalue(rast public.raster, band integer, pt public.geometry, exclude_nodata_value boolean)

Returns: double precision

Language: C

args: rast, bandnum, pt, exclude_nodata_value=true - Returns the nearest non-NODATA value of a given bands pixel specified by a columnx and rowy or a geometric point expressed in the same spatial reference coordinate system as the raster.

RASTER_nearestValue

Function: st_nearestvalue(rast public.raster, columnx integer, rowy integer, exclude_nodata_value boolean)

Returns: double precision

Language: SQL

args: rast, columnx, rowy, exclude_nodata_value=true - Returns the nearest non-NODATA value of a given bands pixel specified by a columnx and rowy or a geometric point expressed in the same spatial reference coordinate system as the raster.

 SELECT st_nearestvalue($1, 1, st_setsrid(st_makepoint(st_rastertoworldcoordx($1, $2, $3), st_rastertoworldcoordy($1, $2, $3)), st_srid($1)), $4) 

Function: st_nearestvalue(rast public.raster, pt public.geometry, exclude_nodata_value boolean)

Returns: double precision

Language: SQL

args: rast, pt, exclude_nodata_value=true - Returns the nearest non-NODATA value of a given bands pixel specified by a columnx and rowy or a geometric point expressed in the same spatial reference coordinate system as the raster.

 SELECT st_nearestvalue($1, 1, $2, $3) 

Function: st_neighborhood(rast public.raster, band integer, columnx integer, rowy integer, distancex integer, distancey integer, exclude_nodata_value boolean)

Returns: double precision[]

Language: SQL

args: rast, bandnum, columnX, rowY, distanceX, distanceY, exclude_nodata_value=true - Returns a 2-D double precision array of the non-NODATA values around a given bands pixel specified by either a columnX and rowY or a geometric point expressed in the same spatial reference coordinate system as the raster.

 SELECT _st_neighborhood($1, $2, $3, $4, $5, $6, $7) 

Function: st_neighborhood(rast public.raster, band integer, pt public.geometry, distancex integer, distancey integer, exclude_nodata_value boolean)

Returns: double precision[]

Language: PLPGSQL

args: rast, bandnum, pt, distanceX, distanceY, exclude_nodata_value=true - Returns a 2-D double precision array of the non-NODATA values around a given bands pixel specified by either a columnX and rowY or a geometric point expressed in the same spatial reference coordinate system as the raster.

	DECLARE
		wx double precision;
		wy double precision;
		rtn double precision[][];
	BEGIN
		IF (st_geometrytype($3) != 'ST_Point') THEN
			RAISE EXCEPTION 'Attempting to get the neighbor of a pixel with a non-point geometry';
		END IF;

		IF ST_SRID(rast) != ST_SRID(pt) THEN
			RAISE EXCEPTION 'Raster and geometry do not have the same SRID';
		END IF;

		wx := st_x($3);
		wy := st_y($3);

		SELECT _st_neighborhood(
			$1, $2,
			st_worldtorastercoordx(rast, wx, wy),
			st_worldtorastercoordy(rast, wx, wy),
			$4, $5,
			$6
		) INTO rtn;
		RETURN rtn;
	END;
	

Function: st_neighborhood(rast public.raster, columnx integer, rowy integer, distancex integer, distancey integer, exclude_nodata_value boolean)

Returns: double precision[]

Language: SQL

args: rast, columnX, rowY, distanceX, distanceY, exclude_nodata_value=true - Returns a 2-D double precision array of the non-NODATA values around a given bands pixel specified by either a columnX and rowY or a geometric point expressed in the same spatial reference coordinate system as the raster.

 SELECT _st_neighborhood($1, 1, $2, $3, $4, $5, $6) 

Function: st_neighborhood(rast public.raster, pt public.geometry, distancex integer, distancey integer, exclude_nodata_value boolean)

Returns: double precision[]

Language: SQL

args: rast, pt, distanceX, distanceY, exclude_nodata_value=true - Returns a 2-D double precision array of the non-NODATA values around a given bands pixel specified by either a columnX and rowY or a geometric point expressed in the same spatial reference coordinate system as the raster.

 SELECT st_neighborhood($1, 1, $2, $3, $4, $5) 

Function: st_node(g public.geometry)

Returns: geometry

Language: C

args: geom - Node a set of linestrings.

ST_Node

Function: st_notsamealignmentreason(rast1 public.raster, rast2 public.raster)

Returns: text

Language: C

args: rastA, rastB - Returns text stating if rasters are aligned and if not aligned, a reason why.

RASTER_notSameAlignmentReason

Function: st_npoints(public.geometry)

Returns: integer

Language: C

args: g1 - Return the number of points (vertexes) in a geometry.

LWGEOM_npoints

Function: st_nrings(public.geometry)

Returns: integer

Language: C

args: geomA - If the geometry is a polygon or multi-polygon returns the number of rings.

LWGEOM_nrings

Function: st_numbands(public.raster)

Returns: integer

Language: C

args: rast - Returns the number of bands in the raster object.

RASTER_getNumBands

Function: st_numgeometries(public.geometry)

Returns: integer

Language: C

args: geom - If geometry is a GEOMETRYCOLLECTION (or MULTI*) return the number of geometries, for single geometries will return 1, otherwise return NULL.

LWGEOM_numgeometries_collection

Function: st_numinteriorring(public.geometry)

Returns: integer

Language: C

args: a_polygon - Return the number of interior rings of the first polygon in the geometry. Synonym to ST_NumInteriorRings.

LWGEOM_numinteriorrings_polygon

Function: st_numinteriorrings(public.geometry)

Returns: integer

Language: C

args: a_polygon - Return the number of interior rings of the a polygon in the geometry. This will work with POLYGON and return NULL for a MULTIPOLYGON type or any other type

LWGEOM_numinteriorrings_polygon

Function: st_numpatches(public.geometry)

Returns: integer

Language: SQL

args: g1 - Return the number of faces on a Polyhedral Surface. Will return null for non-polyhedral geometries.

	SELECT CASE WHEN ST_GeometryType($1) = 'ST_PolyhedralSurface'
	THEN ST_NumGeometries($1)
	ELSE NULL END
	

Function: st_numpoints(public.geometry)

Returns: integer

Language: C

args: g1 - Return the number of points in an ST_LineString or ST_CircularString value.

LWGEOM_numpoints_linestring

Function: st_offsetcurve(line public.geometry, distance double precision, params text)

Returns: geometry

Language: C

args: line, signed_distance, style_parameters=' - Return an offset line at a given distance and side from an input line. Useful for computing parallel lines about a center line

ST_OffsetCurve

Function: st_orderingequals(geometrya public.geometry, geometryb public.geometry)

Returns: boolean

Language: SQL

args: A, B - Returns true if the given geometries represent the same geometry and points are in the same directional order.

 
	SELECT $1 ~= $2 AND _ST_OrderingEquals($1, $2)
	

Function: st_overlaps(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: A, B - Returns TRUE if the Geometries share space, are of the same dimension, but are not completely contained by each other.

SELECT $1 && $2 AND _ST_Overlaps($1,$2)

Function: st_overlaps(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if raster rastA and rastB intersect but one does not completely contain the other.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_overlaps(st_convexhull($1), st_convexhull($3)) ELSE _st_overlaps($1, $2, $3, $4) END 

Function: st_overlaps(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if raster rastA and rastB intersect but one does not completely contain the other.

 SELECT st_overlaps($1, NULL::integer, $2, NULL::integer) 

Function: st_patchn(public.geometry, integer)

Returns: geometry

Language: SQL

args: geomA, n - Return the 1-based Nth geometry (face) if the geometry is a POLYHEDRALSURFACE, POLYHEDRALSURFACEM. Otherwise, return NULL.

	SELECT CASE WHEN ST_GeometryType($1) = 'ST_PolyhedralSurface'
	THEN ST_GeometryN($1, $2)
	ELSE NULL END
	

Function: st_perimeter(geog public.geography, use_spheroid boolean)

Returns: double precision

Language: C

args: geog, use_spheroid=true - Return the length measurement of the boundary of an ST_Surface or ST_MultiSurface geometry or geography. (Polygon, Multipolygon). geometry measurement is in units of spatial reference and geography is in meters.

geography_perimeter

Function: st_perimeter(public.geometry)

Returns: double precision

Language: C

args: g1 - Return the length measurement of the boundary of an ST_Surface or ST_MultiSurface geometry or geography. (Polygon, Multipolygon). geometry measurement is in units of spatial reference and geography is in meters.

LWGEOM_perimeter2d_poly

Function: st_perimeter2d(public.geometry)

Returns: double precision

Language: C

args: geomA - Returns the 2-dimensional perimeter of the geometry, if it is a polygon or multi-polygon. This is currently an alias for ST_Perimeter.

LWGEOM_perimeter2d_poly

Function: st_pixelascentroid(rast public.raster, x integer, y integer)

Returns: geometry

Language: SQL

args: rast, columnx, rowy - Returns the centroid (point geometry) of the area represented by a pixel.

 SELECT ST_Centroid(geom) FROM _st_pixelaspolygons($1, NULL, $2, $3) 

Function: st_pixelascentroids(rast public.raster, band integer, exclude_nodata_value boolean)

Returns: SET OF record

Language: SQL

args: rast, band=1, exclude_nodata_value=TRUE - Returns the centroid (point geometry) for each pixel of a raster band along with the value, the X and the Y raster coordinates of each pixel. The point geometry is the centroid of the area represented by a pixel.

 SELECT ST_Centroid(geom), val, x, y FROM _st_pixelaspolygons($1, $2, NULL, NULL, $3) 

Function: st_pixelaspoint(rast public.raster, x integer, y integer)

Returns: geometry

Language: SQL

args: rast, columnx, rowy - Returns a point geometry of the pixels upper-left corner.

 SELECT ST_PointN(ST_ExteriorRing(geom), 1) FROM _st_pixelaspolygons($1, NULL, $2, $3) 

Function: st_pixelaspoints(rast public.raster, band integer, exclude_nodata_value boolean)

Returns: SET OF record

Language: SQL

args: rast, band=1, exclude_nodata_value=TRUE - Returns a point geometry for each pixel of a raster band along with the value, the X and the Y raster coordinates of each pixel. The coordinates of the point geometry are of the pixels upper-left corner.

 SELECT ST_PointN(ST_ExteriorRing(geom), 1), val, x, y FROM _st_pixelaspolygons($1, $2, NULL, NULL, $3) 

Function: st_pixelaspolygon(rast public.raster, x integer, y integer)

Returns: geometry

Language: SQL

args: rast, columnx, rowy - Returns the polygon geometry that bounds the pixel for a particular row and column.

 SELECT geom FROM _st_pixelaspolygons($1, NULL, $2, $3) 

Function: st_pixelaspolygons(rast public.raster, band integer, exclude_nodata_value boolean)

Returns: SET OF record

Language: SQL

args: rast, band=1, exclude_nodata_value=TRUE - Returns the polygon geometry that bounds every pixel of a raster band along with the value, the X and the Y raster coordinates of each pixel.

 SELECT geom, val, x, y FROM _st_pixelaspolygons($1, $2, NULL, NULL, $3) 

Function: st_pixelheight(public.raster)

Returns: double precision

Language: C

args: rast - Returns the pixel height in geometric units of the spatial reference system.

RASTER_getPixelHeight

Function: st_pixelofvalue(rast public.raster, nband integer, search double precision, exclude_nodata_value boolean)

Returns: SET OF record

Language: SQL

args: rast, nband, search, exclude_nodata_value=true - Get the columnx, rowy coordinates of the pixel whose value equals the search value.

 SELECT x, y FROM st_pixelofvalue($1, $2, ARRAY[$3], $4) 

Function: st_pixelofvalue(rast public.raster, nband integer, search double precision[], exclude_nodata_value boolean)

Returns: SET OF record

Language: C

args: rast, nband, search, exclude_nodata_value=true - Get the columnx, rowy coordinates of the pixel whose value equals the search value.

RASTER_pixelOfValue

Function: st_pixelofvalue(rast public.raster, search double precision, exclude_nodata_value boolean)

Returns: SET OF record

Language: SQL

args: rast, search, exclude_nodata_value=true - Get the columnx, rowy coordinates of the pixel whose value equals the search value.

 SELECT x, y FROM st_pixelofvalue($1, 1, ARRAY[$2], $3) 

Function: st_pixelofvalue(rast public.raster, search double precision[], exclude_nodata_value boolean)

Returns: SET OF record

Language: SQL

args: rast, search, exclude_nodata_value=true - Get the columnx, rowy coordinates of the pixel whose value equals the search value.

 SELECT val, x, y FROM st_pixelofvalue($1, 1, $2, $3) 

Function: st_pixelwidth(public.raster)

Returns: double precision

Language: C

args: rast - Returns the pixel width in geometric units of the spatial reference system.

RASTER_getPixelWidth

Function: st_point(double precision, double precision)

Returns: geometry

Language: C

args: x_lon, y_lat - Returns an ST_Point with the given coordinate values. OGC alias for ST_MakePoint.

LWGEOM_makepoint

Function: st_point_inside_circle(public.geometry, double precision, double precision, double precision)

Returns: boolean

Language: C

args: a_point, center_x, center_y, radius - Is the point geometry insert circle defined by center_x, center_y, radius

LWGEOM_inside_circle_point

Function: st_pointfromgeohash(text, integer)

Returns: geometry

Language: C

args: geohash, precision=full_precision_of_geohash - Return a point from a GeoHash string.

point_from_geohash

Function: st_pointfromtext(text)

Returns: geometry

Language: SQL

args: WKT - Makes a point Geometry from WKT with the given SRID. If SRID is not given, it defaults to unknown.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'POINT'
	THEN ST_GeomFromText($1)
	ELSE NULL END
	

Function: st_pointfromtext(text, integer)

Returns: geometry

Language: SQL

args: WKT, srid - Makes a point Geometry from WKT with the given SRID. If SRID is not given, it defaults to unknown.

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'POINT'
	THEN ST_GeomFromText($1, $2)
	ELSE NULL END
	

Function: st_pointfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'POINT'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_pointfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'POINT'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_pointn(public.geometry, integer)

Returns: geometry

Language: C

args: a_linestring, n - Return the Nth point in the first linestring or circular linestring in the geometry. Return NULL if there is no linestring in the geometry.

LWGEOM_pointn_linestring

Function: st_pointonsurface(public.geometry)

Returns: geometry

Language: C

args: g1 - Returns a POINT guaranteed to lie on the surface.

pointonsurface

Function: st_polyfromtext(text)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'POLYGON'
	THEN ST_GeomFromText($1)
	ELSE NULL END
	

Function: st_polyfromtext(text, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'POLYGON'
	THEN ST_GeomFromText($1, $2)
	ELSE NULL END
	

Function: st_polyfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'POLYGON'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_polyfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'POLYGON'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_polygon(public.geometry, integer)

Returns: geometry

Language: SQL

args: aLineString, srid - Returns a polygon built from the specified linestring and SRID.

 
	SELECT ST_SetSRID(ST_MakePolygon($1), $2)
	

Function: st_polygon(rast public.raster, band integer)

Returns: geometry

Language: C

RASTER_getPolygon

Function: st_polygonfromtext(text)

Returns: geometry

Language: SQL

args: WKT - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.

SELECT ST_PolyFromText($1)

Function: st_polygonfromtext(text, integer)

Returns: geometry

Language: SQL

args: WKT, srid - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.

SELECT ST_PolyFromText($1, $2)

Function: st_polygonfromwkb(bytea)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'POLYGON'
	THEN ST_GeomFromWKB($1)
	ELSE NULL END
	

Function: st_polygonfromwkb(bytea, integer)

Returns: geometry

Language: SQL

	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = 'POLYGON'
	THEN ST_GeomFromWKB($1, $2)
	ELSE NULL END
	

Function: st_polygonize(public.geometry)

Returns: geometry

Language: INTERNAL

args: geomfield - Aggregate. Creates a GeometryCollection containing possible polygons formed from the constituent linework of a set of geometries.

aggregate_dummy

Function: st_polygonize(public.geometry[])

Returns: geometry

Language: C

args: geom_array - Aggregate. Creates a GeometryCollection containing possible polygons formed from the constituent linework of a set of geometries.

polygonize_garray

Function: st_project(geog public.geography, distance double precision, azimuth double precision)

Returns: geography

Language: C

args: g1, distance, azimuth - Returns a POINT projected from a start point using a distance in meters and bearing (azimuth) in radians.

geography_project

Function: st_quantile(rast public.raster, exclude_nodata_value boolean, quantile double precision)

Returns: double precision

Language: SQL

args: rast, exclude_nodata_value, quantile=NULL - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT (_st_quantile($1, 1, $2, 1, ARRAY[$3]::double precision[])).value 

Function: st_quantile(rast public.raster, nband integer, exclude_nodata_value boolean, quantile double precision)

Returns: double precision

Language: SQL

args: rast, nband, exclude_nodata_value, quantile - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT (_st_quantile($1, $2, $3, 1, ARRAY[$4]::double precision[])).value 

Function: st_quantile(rast public.raster, nband integer, exclude_nodata_value boolean, quantiles double precision[])

Returns: SET OF record

Language: SQL

args: rast, nband=1, exclude_nodata_value=true, quantiles=NULL - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT _st_quantile($1, $2, $3, 1, $4) 

Function: st_quantile(rast public.raster, nband integer, quantile double precision)

Returns: double precision

Language: SQL

args: rast, nband, quantile - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT (_st_quantile($1, $2, TRUE, 1, ARRAY[$3]::double precision[])).value 

Function: st_quantile(rast public.raster, nband integer, quantiles double precision[])

Returns: SET OF record

Language: SQL

args: rast, nband, quantiles - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT _st_quantile($1, $2, TRUE, 1, $3) 

Function: st_quantile(rast public.raster, quantile double precision)

Returns: double precision

Language: SQL

args: rast, quantile - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT (_st_quantile($1, 1, TRUE, 1, ARRAY[$2]::double precision[])).value 

Function: st_quantile(rast public.raster, quantiles double precision[])

Returns: SET OF record

Language: SQL

args: rast, quantiles - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT _st_quantile($1, 1, TRUE, 1, $2) 

Function: st_quantile(rastertable text, rastercolumn text, exclude_nodata_value boolean, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, 1, $3, 1, ARRAY[$4]::double precision[])).value 

Function: st_quantile(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, $3, $4, 1, ARRAY[$5]::double precision[])).value 

Function: st_quantile(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, quantiles double precision[])

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband=1, exclude_nodata_value=true, quantiles=NULL - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT _st_quantile($1, $2, $3, $4, 1, $5) 

Function: st_quantile(rastertable text, rastercolumn text, nband integer, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, $3, TRUE, 1, ARRAY[$4]::double precision[])).value 

Function: st_quantile(rastertable text, rastercolumn text, nband integer, quantiles double precision[])

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband, quantiles - Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the rasters 25%, 50%, 75% percentile.

 SELECT _st_quantile($1, $2, $3, TRUE, 1, $4) 

Function: st_quantile(rastertable text, rastercolumn text, quantile double precision)

Returns: double precision

Language: SQL

 SELECT (_st_quantile($1, $2, 1, TRUE, 1, ARRAY[$3]::double precision[])).value 

Function: st_quantile(rastertable text, rastercolumn text, quantiles double precision[])

Returns: SET OF record

Language: SQL

 SELECT _st_quantile($1, $2, 1, TRUE, 1, $3) 

Function: st_range4ma(matrix double precision[], nodatamode text, args text[])

Returns: double precision

Language: PLPGSQL

    DECLARE
        _matrix float[][];
        min float;
        max float;
    BEGIN
        _matrix := matrix;
        min := 'Infinity'::float;
        max := '-Infinity'::float;
        FOR x in array_lower(matrix, 1)..array_upper(matrix, 1) LOOP
            FOR y in array_lower(matrix, 2)..array_upper(matrix, 2) LOOP
                IF _matrix[x][y] IS NULL THEN
                    IF NOT nodatamode = 'ignore' THEN
                        _matrix[x][y] := nodatamode::float;
                    END IF;
                END IF;
                IF min > _matrix[x][y] THEN
                    min = _matrix[x][y];
                END IF;
                IF max < _matrix[x][y] THEN
                    max = _matrix[x][y];
                END IF;
            END LOOP;
        END LOOP;
        IF max = '-Infinity'::float OR min = 'Infinity'::float THEN
            RETURN NULL;
        END IF;
        RETURN max - min;
    END;
    

Function: st_range4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		min double precision;
		max double precision;
		x int;
		y int;
		z int;
		ndims int;
	BEGIN
		min := 'Infinity'::double precision;
		max := '-Infinity'::double precision;

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- raster
		FOR z IN array_lower(_value, 1)..array_upper(_value, 1) LOOP
			-- row
			FOR y IN array_lower(_value, 2)..array_upper(_value, 2) LOOP
				-- column
				FOR x IN array_lower(_value, 3)..array_upper(_value, 3) LOOP
					IF _value[z][y][x] IS NULL THEN
						IF array_length(userargs, 1) > 0 THEN
							_value[z][y][x] = userargs[array_lower(userargs, 1)]::double precision;
						ELSE
							CONTINUE;
						END IF;
					END IF;

					IF _value[z][y][x] < min THEN
						min := _value[z][y][x];
					END IF;
					IF _value[z][y][x] > max THEN
						max := _value[z][y][x];
					END IF;
				END LOOP;
			END LOOP;
		END LOOP;

		IF max = '-Infinity'::double precision OR min = 'Infinity'::double precision THEN
			RETURN NULL;
		END IF;

		RETURN max - min;
	END;
	

Function: st_rastertoworldcoord(rast public.raster, columnx integer, rowy integer)

Returns: record

Language: SQL

args: rast, xcolumn, yrow - Returns the rasters upper left corner as geometric X and Y (longitude and latitude) given a column and row. Column and row starts at 1.

 SELECT longitude, latitude FROM _st_rastertoworldcoord($1, $2, $3) 

Function: st_rastertoworldcoordx(rast public.raster, xr integer)

Returns: double precision

Language: SQL

args: rast, xcolumn - Returns the geometric X coordinate upper left of a raster, column and row. Numbering of columns and rows starts at 1.

 SELECT longitude FROM _st_rastertoworldcoord($1, $2, NULL) 

Function: st_rastertoworldcoordx(rast public.raster, xr integer, yr integer)

Returns: double precision

Language: SQL

args: rast, xcolumn, yrow - Returns the geometric X coordinate upper left of a raster, column and row. Numbering of columns and rows starts at 1.

 SELECT longitude FROM _st_rastertoworldcoord($1, $2, $3) 

Function: st_rastertoworldcoordy(rast public.raster, xr integer, yr integer)

Returns: double precision

Language: SQL

args: rast, xcolumn, yrow - Returns the geometric Y coordinate upper left corner of a raster, column and row. Numbering of columns and rows starts at 1.

 SELECT latitude FROM _st_rastertoworldcoord($1, $2, $3) 

Function: st_rastertoworldcoordy(rast public.raster, yr integer)

Returns: double precision

Language: SQL

args: rast, yrow - Returns the geometric Y coordinate upper left corner of a raster, column and row. Numbering of columns and rows starts at 1.

 SELECT latitude FROM _st_rastertoworldcoord($1, NULL, $2) 

Function: st_reclass(rast public.raster, nband integer, reclassexpr text, pixeltype text, nodataval double precision)

Returns: raster

Language: SQL

 SELECT st_reclass($1, ROW($2, $3, $4, $5)) 

Function: st_reclass(rast public.raster, reclassargset public.reclassarg[])

Returns: raster

Language: PLPGSQL

	DECLARE
		i int;
		expr text;
	BEGIN
		-- for each reclassarg, validate elements as all except nodataval cannot be NULL
		FOR i IN SELECT * FROM generate_subscripts($2, 1) LOOP
			IF $2[i].nband IS NULL OR $2[i].reclassexpr IS NULL OR $2[i].pixeltype IS NULL THEN
				RAISE WARNING 'Values are required for the nband, reclassexpr and pixeltype attributes.';
				RETURN rast;
			END IF;
		END LOOP;

		RETURN _st_reclass($1, VARIADIC $2);
	END;
	

Function: st_reclass(rast public.raster, reclassexpr text, pixeltype text)

Returns: raster

Language: SQL

 SELECT st_reclass($1, ROW(1, $2, $3, NULL)) 

Function: st_relate(geom1 public.geometry, geom2 public.geometry)

Returns: text

Language: C

args: geomA, geomB - Returns true if this Geometry is spatially related to anotherGeometry, by testing for intersections between the Interior, Boundary and Exterior of the two geometries as specified by the values in the intersectionMatrixPattern. If no intersectionMatrixPattern is passed in, then returns the maximum intersectionMatrixPattern that relates the 2 geometries.

relate_full

Function: st_relate(geom1 public.geometry, geom2 public.geometry, integer)

Returns: text

Language: C

args: geomA, geomB, BoundaryNodeRule - Returns true if this Geometry is spatially related to anotherGeometry, by testing for intersections between the Interior, Boundary and Exterior of the two geometries as specified by the values in the intersectionMatrixPattern. If no intersectionMatrixPattern is passed in, then returns the maximum intersectionMatrixPattern that relates the 2 geometries.

relate_full

Function: st_relate(geom1 public.geometry, geom2 public.geometry, text)

Returns: boolean

Language: C

args: geomA, geomB, intersectionMatrixPattern - Returns true if this Geometry is spatially related to anotherGeometry, by testing for intersections between the Interior, Boundary and Exterior of the two geometries as specified by the values in the intersectionMatrixPattern. If no intersectionMatrixPattern is passed in, then returns the maximum intersectionMatrixPattern that relates the 2 geometries.

relate_pattern

Function: st_relatematch(text, text)

Returns: boolean

Language: C

args: intersectionMatrix, intersectionMatrixPattern - Returns true if intersectionMattrixPattern1 implies intersectionMatrixPattern2

ST_RelateMatch

Function: st_removepoint(public.geometry, integer)

Returns: geometry

Language: C

args: linestring, offset - Removes point from a linestring. Offset is 0-based.

LWGEOM_removepoint

Function: st_removerepeatedpoints(public.geometry)

Returns: geometry

Language: C

args: geom - Returns a version of the given geometry with duplicated points removed.

ST_RemoveRepeatedPoints

Function: st_resample(rast public.raster, ref public.raster, algorithm text, maxerr double precision, usescale boolean)

Returns: raster

Language: PLPGSQL

args: rast, ref, algorithm=NearestNeighbour, maxerr=0.125, usescale=true - Resample a raster using a specified resampling algorithm, new dimensions, an arbitrary grid corner and a set of raster georeferencing attributes defined or borrowed from another raster.

	DECLARE
		rastsrid int;

		_srid int;
		_dimx int;
		_dimy int;
		_scalex double precision;
		_scaley double precision;
		_gridx double precision;
		_gridy double precision;
		_skewx double precision;
		_skewy double precision;
	BEGIN
		SELECT srid, width, height, scalex, scaley, upperleftx, upperlefty, skewx, skewy INTO _srid, _dimx, _dimy, _scalex, _scaley, _gridx, _gridy, _skewx, _skewy FROM st_metadata($2);

		rastsrid := ST_SRID($1);

		-- both rasters must have the same SRID
		IF (rastsrid != _srid) THEN
			RAISE EXCEPTION 'The raster to be resampled has a different SRID from the reference raster';
			RETURN NULL;
		END IF;

		IF usescale IS TRUE THEN
			_dimx := NULL;
			_dimy := NULL;
		ELSE
			_scalex := NULL;
			_scaley := NULL;
		END IF;

		RETURN _st_gdalwarp($1, $3, $4, NULL, _scalex, _scaley, _gridx, _gridy, _skewx, _skewy, _dimx, _dimy);
	END;
	

Function: st_resample(rast public.raster, ref public.raster, usescale boolean, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, ref, usescale, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster using a specified resampling algorithm, new dimensions, an arbitrary grid corner and a set of raster georeferencing attributes defined or borrowed from another raster.

 SELECT st_resample($1, $2, $4, $5, $3) 

Function: st_resample(rast public.raster, scalex double precision, scaley double precision, gridx double precision, gridy double precision, skewx double precision, skewy double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, scalex=0, scaley=0, gridx=NULL, gridy=NULL, skewx=0, skewy=0, algorithm=NearestNeighbor, maxerr=0.125 - Resample a raster using a specified resampling algorithm, new dimensions, an arbitrary grid corner and a set of raster georeferencing attributes defined or borrowed from another raster.

 SELECT _st_gdalwarp($1, $8,	$9, NULL, $2, $3, $4, $5, $6, $7) 

Function: st_resample(rast public.raster, width integer, height integer, gridx double precision, gridy double precision, skewx double precision, skewy double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, width, height, gridx=NULL, gridy=NULL, skewx=0, skewy=0, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster using a specified resampling algorithm, new dimensions, an arbitrary grid corner and a set of raster georeferencing attributes defined or borrowed from another raster.

 SELECT _st_gdalwarp($1, $8,	$9, NULL, NULL, NULL, $4, $5, $6, $7, $2, $3) 

Function: st_rescale(rast public.raster, scalex double precision, scaley double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, scalex, scaley, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster by adjusting only its scale (or pixel size). New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor.

 SELECT _st_gdalwarp($1, $4, $5, NULL, $2, $3) 

Function: st_rescale(rast public.raster, scalexy double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, scalexy, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster by adjusting only its scale (or pixel size). New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor.

 SELECT _st_gdalwarp($1, $3, $4, NULL, $2, $2) 

Function: st_resize(rast public.raster, percentwidth double precision, percentheight double precision, algorithm text, maxerr double precision)

Returns: raster

Language: PLPGSQL

args: rast, percentwidth, percentheight, algorithm=NearestNeighbor, maxerr=0.125 - Resize a raster to a new width/height

	DECLARE
		_width integer;
		_height integer;
	BEGIN
		-- range check
		IF $2 <= 0. OR $2 > 1. OR $3 <= 0. OR $3 > 1. THEN
			RAISE EXCEPTION 'Percentages must be a value greater than zero and less than or equal to one, e.g. 0.5 for 50%%';
		END IF;

		SELECT width, height INTO _width, _height FROM ST_Metadata($1);

		_width := round(_width::double precision * $2)::integer;
		_height:= round(_height::double precision * $3)::integer;

		IF _width < 1 THEN
			_width := 1;
		END IF;
		IF _height < 1 THEN
			_height := 1;
		END IF;

		RETURN _st_gdalwarp(
			$1,
			$4, $5,
			NULL,
			NULL, NULL,
			NULL, NULL,
			NULL, NULL,
			_width, _height
		);
	END;
	

Function: st_resize(rast public.raster, width integer, height integer, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, width, height, algorithm=NearestNeighbor, maxerr=0.125 - Resize a raster to a new width/height

 SELECT _st_gdalwarp($1, $4, $5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, abs($2), abs($3)) 

Function: st_resize(rast public.raster, width text, height text, algorithm text, maxerr double precision)

Returns: raster

Language: PLPGSQL

args: rast, width, height, algorithm=NearestNeighbor, maxerr=0.125 - Resize a raster to a new width/height

	DECLARE
		i integer;

		wh text[2];

		whi integer[2];
		whd double precision[2];

		_width integer;
		_height integer;
	BEGIN
		wh[1] := trim(both from $2);
		wh[2] := trim(both from $3);

		-- see if width and height are percentages
		FOR i IN 1..2 LOOP
			IF position('%' in wh[i]) > 0 THEN
				BEGIN
					wh[i] := (regexp_matches(wh[i], E'^(\\d*.?\\d*)%{1}$'))[1];
					IF length(wh[i]) < 1 THEN
						RAISE invalid_parameter_value;
					END IF;

					whd[i] := wh[i]::double precision * 0.01;
				EXCEPTION WHEN OTHERS THEN
					RAISE EXCEPTION 'Invalid percentage value provided for width/height';
					RETURN NULL;
				END;
			ELSE
				BEGIN
					whi[i] := abs(wh[i]::integer);
				EXCEPTION WHEN OTHERS THEN
					RAISE EXCEPTION 'Non-integer value provided for width/height';
					RETURN NULL;
				END;
			END IF;
		END LOOP;

		IF whd[1] IS NOT NULL OR whd[2] IS NOT NULL THEN
			SELECT foo.width, foo.height INTO _width, _height FROM ST_Metadata($1) AS foo;

			IF whd[1] IS NOT NULL THEN
				whi[1] := round(_width::double precision * whd[1])::integer;
			END IF;

			IF whd[2] IS NOT NULL THEN
				whi[2] := round(_height::double precision * whd[2])::integer;
			END IF;

		END IF;

		-- should NEVER be here
		IF whi[1] IS NULL OR whi[2] IS NULL THEN
			RAISE EXCEPTION 'Unable to determine appropriate width or height';
			RETURN NULL;
		END IF;

		FOR i IN 1..2 LOOP
			IF whi[i] < 1 THEN
				whi[i] = 1;
			END IF;
		END LOOP;

		RETURN _st_gdalwarp(
			$1,
			$4, $5,
			NULL,
			NULL, NULL,
			NULL, NULL,
			NULL, NULL,
			whi[1], whi[2]
		);
	END;
	

Function: st_reskew(rast public.raster, skewx double precision, skewy double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, skewx, skewy, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster by adjusting only its skew (or rotation parameters). New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor.

 SELECT _st_gdalwarp($1, $4, $5, NULL, 0, 0, NULL, NULL, $2, $3) 

Function: st_reskew(rast public.raster, skewxy double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, skewxy, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster by adjusting only its skew (or rotation parameters). New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor.

 SELECT _st_gdalwarp($1, $3, $4, NULL, 0, 0, NULL, NULL, $2, $2) 

Function: st_reverse(public.geometry)

Returns: geometry

Language: C

args: g1 - Returns the geometry with vertex order reversed.

LWGEOM_reverse

Function: st_rotate(public.geometry, double precision)

Returns: geometry

Language: SQL

args: geomA, rotRadians - Rotate a geometry rotRadians counter-clockwise about an origin.

SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)

Function: st_rotate(public.geometry, double precision, double precision, double precision)

Returns: geometry

Language: SQL

args: geomA, rotRadians, x0, y0 - Rotate a geometry rotRadians counter-clockwise about an origin.

SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2),  cos($2), 0, 0, 0, 1,	$3 - cos($2) * $3 + sin($2) * $4, $4 - sin($2) * $3 - cos($2) * $4, 0)

Function: st_rotate(public.geometry, double precision, public.geometry)

Returns: geometry

Language: SQL

args: geomA, rotRadians, pointOrigin - Rotate a geometry rotRadians counter-clockwise about an origin.

SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2),  cos($2), 0, 0, 0, 1, ST_X($3) - cos($2) * ST_X($3) + sin($2) * ST_Y($3), ST_Y($3) - sin($2) * ST_X($3) - cos($2) * ST_Y($3), 0)

Function: st_rotatex(public.geometry, double precision)

Returns: geometry

Language: SQL

args: geomA, rotRadians - Rotate a geometry rotRadians about the X axis.

SELECT ST_Affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)

Function: st_rotatey(public.geometry, double precision)

Returns: geometry

Language: SQL

args: geomA, rotRadians - Rotate a geometry rotRadians about the Y axis.

SELECT ST_Affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)

Function: st_rotatez(public.geometry, double precision)

Returns: geometry

Language: SQL

args: geomA, rotRadians - Rotate a geometry rotRadians about the Z axis.

SELECT ST_Rotate($1, $2)

Function: st_rotation(public.raster)

Returns: double precision

Language: SQL

args: rast - Returns the rotation of the raster in radian.

 SELECT (ST_Geotransform($1)).theta_i 

Function: st_roughness(rast public.raster, nband integer, customextent public.raster, pixeltype text, interpolate_nodata boolean)

Returns: raster

Language: PLPGSQL

	DECLARE
		_rast raster;
		_nband integer;
		_pixtype text;
		_pixwidth double precision;
		_pixheight double precision;
		_width integer;
		_height integer;
		_customextent raster;
		_extenttype text;
	BEGIN
		_customextent := customextent;
		IF _customextent IS NULL THEN
			_extenttype := 'FIRST';
		ELSE
			_extenttype := 'CUSTOM';
		END IF;

		IF interpolate_nodata IS TRUE THEN
			_rast := ST_MapAlgebra(
				ARRAY[ROW(rast, nband)]::rastbandarg[],
				'st_invdistweight4ma(double precision[][][], integer[][], text[])'::regprocedure,
				pixeltype,
				'FIRST', NULL,
				1, 1
			);
			_nband := 1;
			_pixtype := NULL;
		ELSE
			_rast := rast;
			_nband := nband;
			_pixtype := pixeltype;
		END IF;

		RETURN ST_MapAlgebra(
			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
			'_st_roughness4ma(double precision[][][], integer[][], text[])'::regprocedure,
			_pixtype,
			_extenttype, _customextent,
			1, 1);
	END;
	

Function: st_samealignment(public.raster)

Returns: boolean

Language: INTERNAL

args: rastfield - Returns true if rasters have same skew, scale, spatial ref, and offset (pixels can be put on same grid without cutting into pixels) and false if they dont with notice detailing issue.

aggregate_dummy

Function: st_samealignment(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: C

args: rastA, rastB - Returns true if rasters have same skew, scale, spatial ref, and offset (pixels can be put on same grid without cutting into pixels) and false if they dont with notice detailing issue.

RASTER_sameAlignment

Function: st_samealignment(ulx1 double precision, uly1 double precision, scalex1 double precision, scaley1 double precision, skewx1 double precision, skewy1 double precision, ulx2 double precision, uly2 double precision, scalex2 double precision, scaley2 double precision, skewx2 double precision, skewy2 double precision)

Returns: boolean

Language: SQL

args: ulx1, uly1, scalex1, scaley1, skewx1, skewy1, ulx2, uly2, scalex2, scaley2, skewx2, skewy2 - Returns true if rasters have same skew, scale, spatial ref, and offset (pixels can be put on same grid without cutting into pixels) and false if they dont with notice detailing issue.

 SELECT st_samealignment(st_makeemptyraster(1, 1, $1, $2, $3, $4, $5, $6), st_makeemptyraster(1, 1, $7, $8, $9, $10, $11, $12)) 

Function: st_scale(public.geometry, double precision, double precision)

Returns: geometry

Language: SQL

args: geomA, XFactor, YFactor - Scales the geometry to a new size by multiplying the ordinates with the parameters. Ie: ST_Scale(geom, Xfactor, Yfactor, Zfactor).

SELECT ST_Scale($1, $2, $3, 1)

Function: st_scale(public.geometry, double precision, double precision, double precision)

Returns: geometry

Language: SQL

args: geomA, XFactor, YFactor, ZFactor - Scales the geometry to a new size by multiplying the ordinates with the parameters. Ie: ST_Scale(geom, Xfactor, Yfactor, Zfactor).

SELECT ST_Affine($1,  $2, 0, 0,  0, $3, 0,  0, 0, $4,  0, 0, 0)

Function: st_scalex(public.raster)

Returns: double precision

Language: C

args: rast - Returns the X component of the pixel width in units of coordinate reference system.

RASTER_getXScale

Function: st_scaley(public.raster)

Returns: double precision

Language: C

args: rast - Returns the Y component of the pixel height in units of coordinate reference system.

RASTER_getYScale

Function: st_segmentize(geog public.geography, max_segment_length double precision)

Returns: geography

Language: C

args: geog, max_segment_length - Return a modified geometry/geography having no segment longer than the given distance. Distance computation is performed in 2d only. For geometry, length units are in units of spatial reference. For geography, units are in meters.

geography_segmentize

Function: st_segmentize(public.geometry, double precision)

Returns: geometry

Language: C

args: geom, max_segment_length - Return a modified geometry/geography having no segment longer than the given distance. Distance computation is performed in 2d only. For geometry, length units are in units of spatial reference. For geography, units are in meters.

LWGEOM_segmentize2d

Function: st_setbandisnodata(rast public.raster, band integer)

Returns: raster

Language: C

args: rast, band=1 - Sets the isnodata flag of the band to TRUE.

RASTER_setBandIsNoData

Function: st_setbandnodatavalue(rast public.raster, band integer, nodatavalue double precision, forcechecking boolean)

Returns: raster

Language: C

args: rast, band, nodatavalue, forcechecking=false - Sets the value for the given band that represents no data. Band 1 is assumed if no band is specified. To mark a band as having no nodata value, set the nodata value = NULL.

RASTER_setBandNoDataValue

Function: st_setbandnodatavalue(rast public.raster, nodatavalue double precision)

Returns: raster

Language: SQL

args: rast, nodatavalue - Sets the value for the given band that represents no data. Band 1 is assumed if no band is specified. To mark a band as having no nodata value, set the nodata value = NULL.

 SELECT st_setbandnodatavalue($1, 1, $2, FALSE) 

Function: st_setgeoreference(rast public.raster, georef text, format text)

Returns: raster

Language: PLPGSQL

args: rast, georefcoords, format=GDAL - Set Georeference 6 georeference parameters in a single call. Numbers should be separated by white space. Accepts inputs in GDAL or ESRI format. Default is GDAL.

    DECLARE
        params text[];
        rastout raster;
    BEGIN
        IF rast IS NULL THEN
            RAISE WARNING 'Cannot set georeferencing on a null raster in st_setgeoreference.';
            RETURN rastout;
        END IF;

        SELECT regexp_matches(georef,
            E'(-?\\d+(?:\\.\\d+)?)\\s(-?\\d+(?:\\.\\d+)?)\\s(-?\\d+(?:\\.\\d+)?)\\s' ||
            E'(-?\\d+(?:\\.\\d+)?)\\s(-?\\d+(?:\\.\\d+)?)\\s(-?\\d+(?:\\.\\d+)?)') INTO params;

        IF NOT FOUND THEN
            RAISE EXCEPTION 'st_setgeoreference requires a string with 6 floating point values.';
        END IF;

        IF format = 'ESRI' THEN
            -- params array is now:
            -- {scalex, skewy, skewx, scaley, upperleftx, upperlefty}
            rastout := st_setscale(rast, params[1]::float8, params[4]::float8);
            rastout := st_setskew(rastout, params[3]::float8, params[2]::float8);
            rastout := st_setupperleft(rastout,
                                   params[5]::float8 - (params[1]::float8 * 0.5),
                                   params[6]::float8 - (params[4]::float8 * 0.5));
        ELSE
            IF format != 'GDAL' THEN
                RAISE WARNING 'Format ''%'' is not recognized, defaulting to GDAL format.', format;
            END IF;
            -- params array is now:
            -- {scalex, skewy, skewx, scaley, upperleftx, upperlefty}

            rastout := st_setscale(rast, params[1]::float8, params[4]::float8);
            rastout := st_setskew( rastout, params[3]::float8, params[2]::float8);
            rastout := st_setupperleft(rastout, params[5]::float8, params[6]::float8);
        END IF;
        RETURN rastout;
    END;
    

Function: st_setgeoreference(rast public.raster, upperleftx double precision, upperlefty double precision, scalex double precision, scaley double precision, skewx double precision, skewy double precision)

Returns: raster

Language: SQL

args: rast, upperleftx, upperlefty, scalex, scaley, skewx, skewy - Set Georeference 6 georeference parameters in a single call. Numbers should be separated by white space. Accepts inputs in GDAL or ESRI format. Default is GDAL.

 SELECT st_setgeoreference($1, array_to_string(ARRAY[$4, $7, $6, $5, $2, $3], ' ')) 

Function: st_setgeotransform(rast public.raster, imag double precision, jmag double precision, theta_i double precision, theta_ij double precision, xoffset double precision, yoffset double precision)

Returns: raster

Language: C

RASTER_setGeotransform

Function: st_setpoint(public.geometry, integer, public.geometry)

Returns: geometry

Language: C

args: linestring, zerobasedposition, point - Replace point N of linestring with given point. Index is 0-based.

LWGEOM_setpoint_linestring

Function: st_setrotation(rast public.raster, rotation double precision)

Returns: raster

Language: C

args: rast, rotation - Set the rotation of the raster in radian.

RASTER_setRotation

Function: st_setscale(rast public.raster, scale double precision)

Returns: raster

Language: C

args: rast, xy - Sets the X and Y size of pixels in units of coordinate reference system. Number units/pixel width/height.

RASTER_setScale

Function: st_setscale(rast public.raster, scalex double precision, scaley double precision)

Returns: raster

Language: C

args: rast, x, y - Sets the X and Y size of pixels in units of coordinate reference system. Number units/pixel width/height.

RASTER_setScaleXY

Function: st_setskew(rast public.raster, skew double precision)

Returns: raster

Language: C

args: rast, skewxy - Sets the georeference X and Y skew (or rotation parameter). If only one is passed in, sets X and Y to the same value.

RASTER_setSkew

Function: st_setskew(rast public.raster, skewx double precision, skewy double precision)

Returns: raster

Language: C

args: rast, skewx, skewy - Sets the georeference X and Y skew (or rotation parameter). If only one is passed in, sets X and Y to the same value.

RASTER_setSkewXY

Function: st_setsrid(public.geometry, integer)

Returns: geometry

Language: C

args: geom, srid - Sets the SRID on a geometry to a particular integer value.

LWGEOM_set_srid

Function: st_setsrid(rast public.raster, srid integer)

Returns: raster

Language: C

args: rast, srid - Sets the SRID of a raster to a particular integer srid defined in the spatial_ref_sys table.

RASTER_setSRID

Function: st_setupperleft(rast public.raster, upperleftx double precision, upperlefty double precision)

Returns: raster

Language: C

args: rast, x, y - Sets the value of the upper left corner of the pixel to projected X and Y coordinates.

RASTER_setUpperLeftXY

Function: st_setvalue(rast public.raster, band integer, x integer, y integer, newvalue double precision)

Returns: raster

Language: C

args: rast, bandnum, columnx, rowy, newvalue - Returns modified raster resulting from setting the value of a given band in a given columnx, rowy pixel or the pixels that intersect a particular geometry. Band numbers start at 1 and assumed to be 1 if not specified.

RASTER_setPixelValue

Function: st_setvalue(rast public.raster, geom public.geometry, newvalue double precision)

Returns: raster

Language: SQL

args: rast, geom, newvalue - Returns modified raster resulting from setting the value of a given band in a given columnx, rowy pixel or the pixels that intersect a particular geometry. Band numbers start at 1 and assumed to be 1 if not specified.

 SELECT st_setvalues($1, 1, ARRAY[ROW($2, $3)]::geomval[], FALSE) 

Function: st_setvalue(rast public.raster, nband integer, geom public.geometry, newvalue double precision)

Returns: raster

Language: SQL

args: rast, bandnum, geom, newvalue - Returns modified raster resulting from setting the value of a given band in a given columnx, rowy pixel or the pixels that intersect a particular geometry. Band numbers start at 1 and assumed to be 1 if not specified.

 SELECT st_setvalues($1, $2, ARRAY[ROW($3, $4)]::geomval[], FALSE) 

Function: st_setvalue(rast public.raster, x integer, y integer, newvalue double precision)

Returns: raster

Language: SQL

args: rast, columnx, rowy, newvalue - Returns modified raster resulting from setting the value of a given band in a given columnx, rowy pixel or the pixels that intersect a particular geometry. Band numbers start at 1 and assumed to be 1 if not specified.

 SELECT st_setvalue($1, 1, $2, $3, $4) 

Function: st_setvalues(rast public.raster, nband integer, geomvalset public.geomval[], keepnodata boolean)

Returns: raster

Language: C

args: rast, nband, geomvalset, keepnodata=FALSE - Returns modified raster resulting from setting the values of a given band.

RASTER_setPixelValuesGeomval

Function: st_setvalues(rast public.raster, nband integer, x integer, y integer, newvalueset double precision[], noset boolean[], keepnodata boolean)

Returns: raster

Language: SQL

args: rast, nband, columnx, rowy, newvalueset, noset=NULL, keepnodata=FALSE - Returns modified raster resulting from setting the values of a given band.

 SELECT _st_setvalues($1, $2, $3, $4, $5, $6, FALSE, NULL, $7) 

Function: st_setvalues(rast public.raster, nband integer, x integer, y integer, newvalueset double precision[], nosetvalue double precision, keepnodata boolean)

Returns: raster

Language: SQL

args: rast, nband, columnx, rowy, newvalueset, nosetvalue, keepnodata=FALSE - Returns modified raster resulting from setting the values of a given band.

 SELECT _st_setvalues($1, $2, $3, $4, $5, NULL, TRUE, $6, $7) 

Function: st_setvalues(rast public.raster, nband integer, x integer, y integer, width integer, height integer, newvalue double precision, keepnodata boolean)

Returns: raster

Language: PLPGSQL

args: rast, nband, columnx, rowy, width, height, newvalue, keepnodata=FALSE - Returns modified raster resulting from setting the values of a given band.

	BEGIN
		IF width <= 0 OR height <= 0 THEN
			RAISE EXCEPTION 'Values for width and height must be greater than zero';
			RETURN NULL;
		END IF;
		RETURN _st_setvalues($1, $2, $3, $4, array_fill($7, ARRAY[$6, $5]::int[]), NULL, FALSE, NULL, $8);
	END;
	

Function: st_setvalues(rast public.raster, x integer, y integer, width integer, height integer, newvalue double precision, keepnodata boolean)

Returns: raster

Language: PLPGSQL

args: rast, columnx, rowy, width, height, newvalue, keepnodata=FALSE - Returns modified raster resulting from setting the values of a given band.

	BEGIN
		IF width <= 0 OR height <= 0 THEN
			RAISE EXCEPTION 'Values for width and height must be greater than zero';
			RETURN NULL;
		END IF;
		RETURN _st_setvalues($1, 1, $2, $3, array_fill($6, ARRAY[$5, $4]::int[]), NULL, FALSE, NULL, $7);
	END;
	

Function: st_sharedpaths(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: lineal1, lineal2 - Returns a collection containing paths shared by the two input linestrings/multilinestrings.

ST_SharedPaths

Function: st_shift_longitude(public.geometry)

Returns: geometry

Language: C

args: geomA - Reads every point/vertex in every component of every feature in a geometry, and if the longitude coordinate is <0, adds 360 to it. The result would be a 0-360 version of the data to be plotted in a 180 centric map

LWGEOM_longitude_shift

Function: st_shortestline(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: g1, g2 - Returns the 2-dimensional shortest line between two geometries

LWGEOM_shortestline2d

Function: st_simplify(public.geometry, double precision)

Returns: geometry

Language: C

args: geomA, tolerance - Returns a "simplified" version of the given geometry using the Douglas-Peucker algorithm.

LWGEOM_simplify2d

Function: st_simplifypreservetopology(public.geometry, double precision)

Returns: geometry

Language: C

args: geomA, tolerance - Returns a "simplified" version of the given geometry using the Douglas-Peucker algorithm. Will avoid creating derived geometries (polygons in particular) that are invalid.

topologypreservesimplify

Function: st_skewx(public.raster)

Returns: double precision

Language: C

args: rast - Returns the georeference X skew (or rotation parameter).

RASTER_getXSkew

Function: st_skewy(public.raster)

Returns: double precision

Language: C

args: rast - Returns the georeference Y skew (or rotation parameter).

RASTER_getYSkew

Function: st_slope(rast public.raster, nband integer, customextent public.raster, pixeltype text, units text, scale double precision, interpolate_nodata boolean)

Returns: raster

Language: PLPGSQL

	DECLARE
		_rast raster;
		_nband integer;
		_pixtype text;
		_pixwidth double precision;
		_pixheight double precision;
		_width integer;
		_height integer;
		_customextent raster;
		_extenttype text;
	BEGIN
		_customextent := customextent;
		IF _customextent IS NULL THEN
			_extenttype := 'FIRST';
		ELSE
			_extenttype := 'CUSTOM';
		END IF;

		IF interpolate_nodata IS TRUE THEN
			_rast := ST_MapAlgebra(
				ARRAY[ROW(rast, nband)]::rastbandarg[],
				'st_invdistweight4ma(double precision[][][], integer[][], text[])'::regprocedure,
				pixeltype,
				'FIRST', NULL,
				1, 1
			);
			_nband := 1;
			_pixtype := NULL;
		ELSE
			_rast := rast;
			_nband := nband;
			_pixtype := pixeltype;
		END IF;

		-- get properties
		_pixwidth := ST_PixelWidth(_rast);
		_pixheight := ST_PixelHeight(_rast);
		SELECT width, height INTO _width, _height FROM ST_Metadata(_rast);

		RETURN ST_MapAlgebra(
			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
			'_st_slope4ma(double precision[][][], integer[][], text[])'::regprocedure,
			_pixtype,
			_extenttype, _customextent,
			1, 1,
			_pixwidth::text, _pixheight::text,
			_width::text, _height::text,
			units::text, scale::text
		);
	END;
	

Function: st_slope(rast public.raster, nband integer, pixeltype text, units text, scale double precision, interpolate_nodata boolean)

Returns: raster

Language: SQL

 SELECT st_slope($1, $2, NULL::raster, $3, $4, $5, $6) 

Function: st_snap(geom1 public.geometry, geom2 public.geometry, double precision)

Returns: geometry

Language: C

args: input, reference, tolerance - Snap segments and vertices of input geometry to vertices of a reference geometry.

ST_Snap

Function: st_snaptogrid(geom1 public.geometry, geom2 public.geometry, double precision, double precision, double precision, double precision)

Returns: geometry

Language: C

args: geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM - Snap all points of the input geometry to a regular grid.

LWGEOM_snaptogrid_pointoff

Function: st_snaptogrid(public.geometry, double precision)

Returns: geometry

Language: SQL

args: geomA, size - Snap all points of the input geometry to a regular grid.

SELECT ST_SnapToGrid($1, 0, 0, $2, $2)

Function: st_snaptogrid(public.geometry, double precision, double precision)

Returns: geometry

Language: SQL

args: geomA, sizeX, sizeY - Snap all points of the input geometry to a regular grid.

SELECT ST_SnapToGrid($1, 0, 0, $2, $3)

Function: st_snaptogrid(public.geometry, double precision, double precision, double precision, double precision)

Returns: geometry

Language: C

args: geomA, originX, originY, sizeX, sizeY - Snap all points of the input geometry to a regular grid.

LWGEOM_snaptogrid

Function: st_snaptogrid(rast public.raster, gridx double precision, gridy double precision, algorithm text, maxerr double precision, scalex double precision, scaley double precision)

Returns: raster

Language: SQL

args: rast, gridx, gridy, algorithm=NearestNeighbour, maxerr=0.125, scalex=DEFAULT 0, scaley=DEFAULT 0 - Resample a raster by snapping it to a grid. New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor.

 SELECT _st_gdalwarp($1, $4, $5, NULL, $6, $7, $2, $3) 

Function: st_snaptogrid(rast public.raster, gridx double precision, gridy double precision, scalex double precision, scaley double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, gridx, gridy, scalex, scaley, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster by snapping it to a grid. New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor.

 SELECT _st_gdalwarp($1, $6, $7, NULL, $4, $5, $2, $3) 

Function: st_snaptogrid(rast public.raster, gridx double precision, gridy double precision, scalexy double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, gridx, gridy, scalexy, algorithm=NearestNeighbour, maxerr=0.125 - Resample a raster by snapping it to a grid. New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor.

 SELECT _st_gdalwarp($1, $5, $6, NULL, $4, $4, $2, $3) 

Function: st_split(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: input, blade - Returns a collection of geometries resulting by splitting a geometry.

ST_Split

Function: st_srid(public.geometry)

Returns: integer

Language: C

args: g1 - Returns the spatial reference identifier for the ST_Geometry as defined in spatial_ref_sys table.

LWGEOM_get_srid

Function: st_srid(public.raster)

Returns: integer

Language: C

args: rast - Returns the spatial reference identifier of the raster as defined in spatial_ref_sys table.

RASTER_getSRID

Function: st_startpoint(public.geometry)

Returns: geometry

Language: C

args: geomA - Returns the first point of a LINESTRING geometry as a POINT.

LWGEOM_startpoint_linestring

Function: st_stddev4ma(matrix double precision[], nodatamode text, args text[])

Returns: double precision

Language: SQL

 SELECT stddev(unnest) FROM unnest($1) 

Function: st_stddev4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: SQL

 SELECT stddev(unnest) FROM unnest($1) 

Function: st_sum4ma(matrix double precision[], nodatamode text, args text[])

Returns: double precision

Language: PLPGSQL

    DECLARE
        _matrix float[][];
        sum float;
    BEGIN
        _matrix := matrix;
        sum := 0;
        FOR x in array_lower(matrix, 1)..array_upper(matrix, 1) LOOP
            FOR y in array_lower(matrix, 2)..array_upper(matrix, 2) LOOP
                IF _matrix[x][y] IS NULL THEN
                    IF nodatamode = 'ignore' THEN
                        _matrix[x][y] := 0;
                    ELSE
                        _matrix[x][y] := nodatamode::float;
                    END IF;
                END IF;
                sum := sum + _matrix[x][y];
            END LOOP;
        END LOOP;
        RETURN sum;
    END;
    

Function: st_sum4ma(value double precision[], pos integer[], userargs text[])

Returns: double precision

Language: PLPGSQL

	DECLARE
		_value double precision[][][];
		sum double precision;
		x int;
		y int;
		z int;
		ndims int;
	BEGIN
		sum := 0;

		ndims := array_ndims(value);
		-- add a third dimension if 2-dimension
		IF ndims = 2 THEN
			_value := _st_convertarray4ma(value);
		ELSEIF ndims != 3 THEN
			RAISE EXCEPTION 'First parameter of function must be a 3-dimension array';
		ELSE
			_value := value;
		END IF;

		-- raster
		FOR z IN array_lower(_value, 1)..array_upper(_value, 1) LOOP
			-- row
			FOR y IN array_lower(_value, 2)..array_upper(_value, 2) LOOP
				-- column
				FOR x IN array_lower(_value, 3)..array_upper(_value, 3) LOOP
					IF _value[z][y][x] IS NULL THEN
						IF array_length(userargs, 1) > 0 THEN
							_value[z][y][x] = userargs[array_lower(userargs, 1)]::double precision;
						ELSE
							CONTINUE;
						END IF;
					END IF;

					sum := sum + _value[z][y][x];
				END LOOP;
			END LOOP;
		END LOOP;

		RETURN sum;
	END;
	

Function: st_summary(public.geography)

Returns: text

Language: C

args: g - Returns a text summary of the contents of the geometry.

LWGEOM_summary

Function: st_summary(public.geometry)

Returns: text

Language: C

args: g - Returns a text summary of the contents of the geometry.

LWGEOM_summary

Function: st_summary(rast public.raster)

Returns: text

Language: PLPGSQL

args: rast - Returns a text summary of the contents of the raster.

	DECLARE
		extent box2d;
		metadata record;
		bandmetadata record;
		msg text;
		msgset text[];
	BEGIN
		extent := ST_Extent(rast::geometry);
		metadata := ST_Metadata(rast);

		msg := 'Raster of ' || metadata.width || 'x' || metadata.height || ' pixels has ' || metadata.numbands || ' ';

		IF metadata.numbands = 1 THEN
			msg := msg || 'band ';
		ELSE
			msg := msg || 'bands ';
		END IF;
		msg := msg || 'and extent of ' || extent;

		IF
			metadata.skewx::numeric(16, 10) <> 0::numeric(16, 10) OR 
			metadata.skewy::numeric(16, 10) <> 0::numeric(16, 10)
		THEN
			msg := 'Skewed ' || overlay(msg placing 'r' from 1 for 1);
		END IF;

		msgset := Array[]::text[] || msg;

		FOR bandmetadata IN SELECT * FROM ST_BandMetadata(rast, ARRAY[]::int[]) LOOP
			msg := 'band ' || bandmetadata.bandnum || ' of pixtype ' || bandmetadata.pixeltype || ' is ';
			IF bandmetadata.isoutdb IS FALSE THEN
				msg := msg || 'in-db ';
			ELSE
				msg := msg || 'out-db ';
			END IF;

			msg := msg || 'with ';
			IF bandmetadata.nodatavalue IS NOT NULL THEN
				msg := msg || 'NODATA value of ' || bandmetadata.nodatavalue;
			ELSE
				msg := msg || 'no NODATA value';
			END IF;

			msgset := msgset || ('    ' || msg);
		END LOOP;

		RETURN array_to_string(msgset, E'\n');
	END;
	

Function: st_summarystats(rast public.raster, exclude_nodata_value boolean)

Returns: record

Language: SQL

args: rast, exclude_nodata_value - Returns record consisting of count, sum, mean, stddev, min, max for a given raster band of a raster or raster coverage. Band 1 is assumed is no band is specified.

 SELECT _st_summarystats($1, 1, $2, 1) 

Function: st_summarystats(rast public.raster, nband integer, exclude_nodata_value boolean)

Returns: record

Language: SQL

args: rast, nband, exclude_nodata_value - Returns record consisting of count, sum, mean, stddev, min, max for a given raster band of a raster or raster coverage. Band 1 is assumed is no band is specified.

 SELECT _st_summarystats($1, $2, $3, 1) 

Function: st_summarystats(rastertable text, rastercolumn text, exclude_nodata_value boolean)

Returns: record

Language: SQL

args: rastertable, rastercolumn, exclude_nodata_value - Returns record consisting of count, sum, mean, stddev, min, max for a given raster band of a raster or raster coverage. Band 1 is assumed is no band is specified.

 SELECT _st_summarystats($1, $2, 1, $3, 1) 

Function: st_summarystats(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean)

Returns: record

Language: SQL

args: rastertable, rastercolumn, nband=1, exclude_nodata_value=true - Returns record consisting of count, sum, mean, stddev, min, max for a given raster band of a raster or raster coverage. Band 1 is assumed is no band is specified.

 SELECT _st_summarystats($1, $2, $3, $4, 1) 

Function: st_symdifference(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: geomA, geomB - Returns a geometry that represents the portions of A and B that do not intersect. It is called a symmetric difference because ST_SymDifference(A,B) = ST_SymDifference(B,A).

symdifference

Function: st_symmetricdifference(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

symdifference

Function: st_tile(rast public.raster, nband integer, width integer, height integer, padwithnodata boolean, nodataval double precision)

Returns: SET OF raster

Language: SQL

args: rast, nband, width, height, padwithnodata=FALSE, nodataval=NULL - Returns a set of rasters resulting from the split of the input raster based upon the desired dimensions of the output rasters.

 SELECT _st_tile($1, $3, $4, ARRAY[$2]::integer[], $5, $6) 

Function: st_tile(rast public.raster, nband integer[], width integer, height integer, padwithnodata boolean, nodataval double precision)

Returns: SET OF raster

Language: SQL

args: rast, nband, width, height, padwithnodata=FALSE, nodataval=NULL - Returns a set of rasters resulting from the split of the input raster based upon the desired dimensions of the output rasters.

 SELECT _st_tile($1, $3, $4, $2, $5, $6) 

Function: st_tile(rast public.raster, width integer, height integer, padwithnodata boolean, nodataval double precision)

Returns: SET OF raster

Language: SQL

args: rast, width, height, padwithnodata=FALSE, nodataval=NULL - Returns a set of rasters resulting from the split of the input raster based upon the desired dimensions of the output rasters.

 SELECT _st_tile($1, $2, $3, NULL::integer[], $4, $5) 

Function: st_touches(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: g1, g2 - Returns TRUE if the geometries have at least one point in common, but their interiors do not intersect.

SELECT $1 && $2 AND _ST_Touches($1,$2)

Function: st_touches(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if raster rastA and rastB have at least one point in common but their interiors do not intersect.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_touches(st_convexhull($1), st_convexhull($3)) ELSE _st_touches($1, $2, $3, $4) END 

Function: st_touches(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if raster rastA and rastB have at least one point in common but their interiors do not intersect.

 SELECT st_touches($1, NULL::integer, $2, NULL::integer) 

Function: st_tpi(rast public.raster, nband integer, customextent public.raster, pixeltype text, interpolate_nodata boolean)

Returns: raster

Language: PLPGSQL

	DECLARE
		_rast raster;
		_nband integer;
		_pixtype text;
		_pixwidth double precision;
		_pixheight double precision;
		_width integer;
		_height integer;
		_customextent raster;
		_extenttype text;
	BEGIN
		_customextent := customextent;
		IF _customextent IS NULL THEN
			_extenttype := 'FIRST';
		ELSE
			_extenttype := 'CUSTOM';
		END IF;

		IF interpolate_nodata IS TRUE THEN
			_rast := ST_MapAlgebra(
				ARRAY[ROW(rast, nband)]::rastbandarg[],
				'st_invdistweight4ma(double precision[][][], integer[][], text[])'::regprocedure,
				pixeltype,
				'FIRST', NULL,
				1, 1
			);
			_nband := 1;
			_pixtype := NULL;
		ELSE
			_rast := rast;
			_nband := nband;
			_pixtype := pixeltype;
		END IF;

		-- get properties
		_pixwidth := ST_PixelWidth(_rast);
		_pixheight := ST_PixelHeight(_rast);
		SELECT width, height INTO _width, _height FROM ST_Metadata(_rast);

		RETURN ST_MapAlgebra(
			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
			'_st_tpi4ma(double precision[][][], integer[][], text[])'::regprocedure,
			_pixtype,
			_extenttype, _customextent,
			1, 1);
	END;
	

Function: st_transform(public.geometry, integer)

Returns: geometry

Language: C

args: g1, srid - Returns a new geometry with its coordinates transformed to the SRID referenced by the integer parameter.

transform

Function: st_transform(rast public.raster, alignto public.raster, algorithm text, maxerr double precision)

Returns: raster

Language: PLPGSQL

args: rast, alignto, algorithm=NearestNeighbor, maxerr=0.125 - Reprojects a raster in a known spatial reference system to another known spatial reference system using specified resampling algorithm. Options are NearestNeighbor, Bilinear, Cubic, CubicSpline, Lanczos defaulting to NearestNeighbor.

	DECLARE
		_srid integer;
		_scalex double precision;
		_scaley double precision;
		_gridx double precision;
		_gridy double precision;
		_skewx double precision;
		_skewy double precision;
	BEGIN
		SELECT srid, scalex, scaley, upperleftx, upperlefty, skewx, skewy INTO _srid, _scalex, _scaley, _gridx, _gridy, _skewx, _skewy FROM st_metadata($2);

		RETURN _st_gdalwarp($1, $3, $4, _srid, _scalex, _scaley, _gridx, _gridy, _skewx, _skewy, NULL, NULL);
	END;
	

Function: st_transform(rast public.raster, srid integer, algorithm text, maxerr double precision, scalex double precision, scaley double precision)

Returns: raster

Language: SQL

args: rast, srid, algorithm=NearestNeighbor, maxerr=0.125, scalex, scaley - Reprojects a raster in a known spatial reference system to another known spatial reference system using specified resampling algorithm. Options are NearestNeighbor, Bilinear, Cubic, CubicSpline, Lanczos defaulting to NearestNeighbor.

 SELECT _st_gdalwarp($1, $3, $4, $2, $5, $6) 

Function: st_transform(rast public.raster, srid integer, scalex double precision, scaley double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

args: rast, srid, scalex, scaley, algorithm=NearestNeighbor, maxerr=0.125 - Reprojects a raster in a known spatial reference system to another known spatial reference system using specified resampling algorithm. Options are NearestNeighbor, Bilinear, Cubic, CubicSpline, Lanczos defaulting to NearestNeighbor.

 SELECT _st_gdalwarp($1, $5, $6, $2, $3, $4) 

Function: st_transform(rast public.raster, srid integer, scalexy double precision, algorithm text, maxerr double precision)

Returns: raster

Language: SQL

 SELECT _st_gdalwarp($1, $4, $5, $2, $3, $3) 

Function: st_translate(public.geometry, double precision, double precision)

Returns: geometry

Language: SQL

args: g1, deltax, deltay - Translates the geometry to a new location using the numeric parameters as offsets. Ie: ST_Translate(geom, X, Y) or ST_Translate(geom, X, Y,Z).

SELECT ST_Translate($1, $2, $3, 0)

Function: st_translate(public.geometry, double precision, double precision, double precision)

Returns: geometry

Language: SQL

args: g1, deltax, deltay, deltaz - Translates the geometry to a new location using the numeric parameters as offsets. Ie: ST_Translate(geom, X, Y) or ST_Translate(geom, X, Y,Z).

SELECT ST_Affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)

Function: st_transscale(public.geometry, double precision, double precision, double precision, double precision)

Returns: geometry

Language: SQL

args: geomA, deltaX, deltaY, XFactor, YFactor - Translates the geometry using the deltaX and deltaY args, then scales it using the XFactor, YFactor args, working in 2D only.

SELECT ST_Affine($1,  $4, 0, 0,  0, $5, 0,
		0, 0, 1,  $2 * $4, $3 * $5, 0)

Function: st_tri(rast public.raster, nband integer, customextent public.raster, pixeltype text, interpolate_nodata boolean)

Returns: raster

Language: PLPGSQL

	DECLARE
		_rast raster;
		_nband integer;
		_pixtype text;
		_pixwidth double precision;
		_pixheight double precision;
		_width integer;
		_height integer;
		_customextent raster;
		_extenttype text;
	BEGIN
		_customextent := customextent;
		IF _customextent IS NULL THEN
			_extenttype := 'FIRST';
		ELSE
			_extenttype := 'CUSTOM';
		END IF;

		IF interpolate_nodata IS TRUE THEN
			_rast := ST_MapAlgebra(
				ARRAY[ROW(rast, nband)]::rastbandarg[],
				'st_invdistweight4ma(double precision[][][], integer[][], text[])'::regprocedure,
				pixeltype,
				'FIRST', NULL,
				1, 1
			);
			_nband := 1;
			_pixtype := NULL;
		ELSE
			_rast := rast;
			_nband := nband;
			_pixtype := pixeltype;
		END IF;

		-- get properties
		_pixwidth := ST_PixelWidth(_rast);
		_pixheight := ST_PixelHeight(_rast);
		SELECT width, height INTO _width, _height FROM ST_Metadata(_rast);

		RETURN ST_MapAlgebra(
			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
			'_st_tri4ma(double precision[][][], integer[][], text[])'::regprocedure,
			_pixtype,
			_extenttype, _customextent,
			1, 1);
	END;
	

Function: st_unaryunion(public.geometry)

Returns: geometry

Language: C

args: geom - Like ST_Union, but working at the geometry component level.

ST_UnaryUnion

Function: st_union(geom1 public.geometry, geom2 public.geometry)

Returns: geometry

Language: C

args: g1, g2 - Returns a geometry that represents the point set union of the Geometries.

geomunion

Function: st_union(public.geometry)

Returns: geometry

Language: INTERNAL

args: g1field - Returns a geometry that represents the point set union of the Geometries.

aggregate_dummy

Function: st_union(public.geometry[])

Returns: geometry

Language: C

args: g1_array - Returns a geometry that represents the point set union of the Geometries.

pgis_union_geometry_array

Function: st_union(public.raster)

Returns: raster

Language: INTERNAL

aggregate_dummy

Function: st_union(public.raster, integer)

Returns: raster

Language: INTERNAL

aggregate_dummy

Function: st_union(public.raster, integer, text)

Returns: raster

Language: INTERNAL

aggregate_dummy

Function: st_union(public.raster, public.unionarg[])

Returns: raster

Language: INTERNAL

aggregate_dummy

Function: st_union(public.raster, text)

Returns: raster

Language: INTERNAL

aggregate_dummy

Function: st_upperleftx(public.raster)

Returns: double precision

Language: C

args: rast - Returns the upper left X coordinate of raster in projected spatial ref.

RASTER_getXUpperLeft

Function: st_upperlefty(public.raster)

Returns: double precision

Language: C

args: rast - Returns the upper left Y coordinate of raster in projected spatial ref.

RASTER_getYUpperLeft

Function: st_value(rast public.raster, band integer, pt public.geometry, exclude_nodata_value boolean)

Returns: double precision

Language: PLPGSQL

args: rast, bandnum, pt, exclude_nodata_value=true - Returns the value of a given band in a given columnx, rowy pixel or at a particular geometric point. Band numbers start at 1 and assumed to be 1 if not specified. If exclude_nodata_value is set to false, then all pixels include nodata pixels are considered to intersect and return value. If exclude_nodata_value is not passed in then reads it from metadata of raster.

    DECLARE
        x float8;
        y float8;
        gtype text;
    BEGIN
        gtype := st_geometrytype(pt);
        IF ( gtype != 'ST_Point' ) THEN
            RAISE EXCEPTION 'Attempting to get the value of a pixel with a non-point geometry';
        END IF;

				IF ST_SRID(pt) != ST_SRID(rast) THEN
            RAISE EXCEPTION 'Raster and geometry do not have the same SRID';
				END IF;

        x := st_x(pt);
        y := st_y(pt);
        RETURN st_value(rast,
                        band,
                        st_worldtorastercoordx(rast, x, y),
                        st_worldtorastercoordy(rast, x, y),
                        exclude_nodata_value);
    END;
    

Function: st_value(rast public.raster, band integer, x integer, y integer, exclude_nodata_value boolean)

Returns: double precision

Language: C

args: rast, bandnum, columnx, rowy, exclude_nodata_value=true - Returns the value of a given band in a given columnx, rowy pixel or at a particular geometric point. Band numbers start at 1 and assumed to be 1 if not specified. If exclude_nodata_value is set to false, then all pixels include nodata pixels are considered to intersect and return value. If exclude_nodata_value is not passed in then reads it from metadata of raster.

RASTER_getPixelValue

Function: st_value(rast public.raster, pt public.geometry, exclude_nodata_value boolean)

Returns: double precision

Language: SQL

args: rast, pt, exclude_nodata_value=true - Returns the value of a given band in a given columnx, rowy pixel or at a particular geometric point. Band numbers start at 1 and assumed to be 1 if not specified. If exclude_nodata_value is set to false, then all pixels include nodata pixels are considered to intersect and return value. If exclude_nodata_value is not passed in then reads it from metadata of raster.

 SELECT st_value($1, 1, $2, $3) 

Function: st_value(rast public.raster, x integer, y integer, exclude_nodata_value boolean)

Returns: double precision

Language: SQL

args: rast, columnx, rowy, exclude_nodata_value=true - Returns the value of a given band in a given columnx, rowy pixel or at a particular geometric point. Band numbers start at 1 and assumed to be 1 if not specified. If exclude_nodata_value is set to false, then all pixels include nodata pixels are considered to intersect and return value. If exclude_nodata_value is not passed in then reads it from metadata of raster.

 SELECT st_value($1, 1, $2, $3, $4) 

Function: st_valuecount(rast public.raster, nband integer, exclude_nodata_value boolean, searchvalue double precision, roundto double precision)

Returns: integer

Language: SQL

args: rast, nband, exclude_nodata_value, searchvalue, roundto=0 - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT (_st_valuecount($1, $2, $3, ARRAY[$4]::double precision[], $5)).count 

Function: st_valuecount(rast public.raster, nband integer, exclude_nodata_value boolean, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

args: rast, nband=1, exclude_nodata_value=true, searchvalues=NULL, roundto=0, OUT value, OUT count - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT value, count FROM _st_valuecount($1, $2, $3, $4, $5) 

Function: st_valuecount(rast public.raster, nband integer, searchvalue double precision, roundto double precision)

Returns: integer

Language: SQL

args: rast, nband, searchvalue, roundto=0 - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT (_st_valuecount($1, $2, TRUE, ARRAY[$3]::double precision[], $4)).count 

Function: st_valuecount(rast public.raster, nband integer, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

args: rast, nband, searchvalues, roundto=0, OUT value, OUT count - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT value, count FROM _st_valuecount($1, $2, TRUE, $3, $4) 

Function: st_valuecount(rast public.raster, searchvalue double precision, roundto double precision)

Returns: integer

Language: SQL

args: rast, searchvalue, roundto=0 - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT (_st_valuecount($1, 1, TRUE, ARRAY[$2]::double precision[], $3)).count 

Function: st_valuecount(rast public.raster, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

args: rast, searchvalues, roundto=0, OUT value, OUT count - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT value, count FROM _st_valuecount($1, 1, TRUE, $2, $3) 

Function: st_valuecount(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, searchvalue double precision, roundto double precision)

Returns: integer

Language: SQL

args: rastertable, rastercolumn, nband, exclude_nodata_value, searchvalue, roundto=0 - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT (_st_valuecount($1, $2, $3, $4, ARRAY[$5]::double precision[], $6)).count 

Function: st_valuecount(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband=1, exclude_nodata_value=true, searchvalues=NULL, roundto=0, OUT value, OUT count - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT value, count FROM _st_valuecount($1, $2, $3, $4, $5, $6) 

Function: st_valuecount(rastertable text, rastercolumn text, nband integer, searchvalue double precision, roundto double precision)

Returns: integer

Language: SQL

args: rastertable, rastercolumn, nband, searchvalue, roundto=0 - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT (_st_valuecount($1, $2, $3, TRUE, ARRAY[$4]::double precision[], $5)).count 

Function: st_valuecount(rastertable text, rastercolumn text, nband integer, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, nband, searchvalues, roundto=0, OUT value, OUT count - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT value, count FROM _st_valuecount($1, $2, $3, TRUE, $4, $5) 

Function: st_valuecount(rastertable text, rastercolumn text, searchvalue double precision, roundto double precision)

Returns: integer

Language: SQL

args: rastertable, rastercolumn, searchvalue, roundto=0 - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT (_st_valuecount($1, $2, 1, TRUE, ARRAY[$3]::double precision[], $4)).count 

Function: st_valuecount(rastertable text, rastercolumn text, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

args: rastertable, rastercolumn, searchvalues, roundto=0, OUT value, OUT count - Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer.

 SELECT value, count FROM _st_valuecount($1, $2, 1, TRUE, $3, $4) 

Function: st_valuepercent(rast public.raster, nband integer, exclude_nodata_value boolean, searchvalue double precision, roundto double precision)

Returns: double precision

Language: SQL

 SELECT (_st_valuecount($1, $2, $3, ARRAY[$4]::double precision[], $5)).percent 

Function: st_valuepercent(rast public.raster, nband integer, exclude_nodata_value boolean, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

 SELECT value, percent FROM _st_valuecount($1, $2, $3, $4, $5) 

Function: st_valuepercent(rast public.raster, nband integer, searchvalue double precision, roundto double precision)

Returns: double precision

Language: SQL

 SELECT (_st_valuecount($1, $2, TRUE, ARRAY[$3]::double precision[], $4)).percent 

Function: st_valuepercent(rast public.raster, nband integer, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

 SELECT value, percent FROM _st_valuecount($1, $2, TRUE, $3, $4) 

Function: st_valuepercent(rast public.raster, searchvalue double precision, roundto double precision)

Returns: double precision

Language: SQL

 SELECT (_st_valuecount($1, 1, TRUE, ARRAY[$2]::double precision[], $3)).percent 

Function: st_valuepercent(rast public.raster, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

 SELECT value, percent FROM _st_valuecount($1, 1, TRUE, $2, $3) 

Function: st_valuepercent(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, searchvalue double precision, roundto double precision)

Returns: double precision

Language: SQL

 SELECT (_st_valuecount($1, $2, $3, $4, ARRAY[$5]::double precision[], $6)).percent 

Function: st_valuepercent(rastertable text, rastercolumn text, nband integer, exclude_nodata_value boolean, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

 SELECT value, percent FROM _st_valuecount($1, $2, $3, $4, $5, $6) 

Function: st_valuepercent(rastertable text, rastercolumn text, nband integer, searchvalue double precision, roundto double precision)

Returns: double precision

Language: SQL

 SELECT (_st_valuecount($1, $2, $3, TRUE, ARRAY[$4]::double precision[], $5)).percent 

Function: st_valuepercent(rastertable text, rastercolumn text, nband integer, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

 SELECT value, percent FROM _st_valuecount($1, $2, $3, TRUE, $4, $5) 

Function: st_valuepercent(rastertable text, rastercolumn text, searchvalue double precision, roundto double precision)

Returns: double precision

Language: SQL

 SELECT (_st_valuecount($1, $2, 1, TRUE, ARRAY[$3]::double precision[], $4)).percent 

Function: st_valuepercent(rastertable text, rastercolumn text, searchvalues double precision[], roundto double precision)

Returns: SET OF record

Language: SQL

 SELECT value, percent FROM _st_valuecount($1, $2, 1, TRUE, $3, $4) 

Function: st_width(public.raster)

Returns: integer

Language: C

args: rast - Returns the width of the raster in pixels.

RASTER_getWidth

Function: st_within(geom1 public.geometry, geom2 public.geometry)

Returns: boolean

Language: SQL

args: A, B - Returns true if the geometry A is completely inside geometry B

SELECT $1 && $2 AND _ST_Contains($2,$1)

Function: st_within(rast1 public.raster, nband1 integer, rast2 public.raster, nband2 integer)

Returns: boolean

Language: SQL

args: rastA, nbandA, rastB, nbandB - Return true if no points of raster rastA lie in the exterior of raster rastB and at least one point of the interior of rastA lies in the interior of rastB.

 SELECT $1 && $3 AND CASE WHEN $2 IS NULL OR $4 IS NULL THEN _st_within(st_convexhull($1), st_convexhull($3)) ELSE _st_contains($3, $4, $1, $2) END 

Function: st_within(rast1 public.raster, rast2 public.raster)

Returns: boolean

Language: SQL

args: rastA, rastB - Return true if no points of raster rastA lie in the exterior of raster rastB and at least one point of the interior of rastA lies in the interior of rastB.

 SELECT st_within($1, NULL::integer, $2, NULL::integer) 

Function: st_wkbtosql(wkb bytea)

Returns: geometry

Language: C

args: WKB - Return a specified ST_Geometry value from Well-Known Binary representation (WKB). This is an alias name for ST_GeomFromWKB that takes no srid

LWGEOM_from_WKB

Function: st_wkttosql(text)

Returns: geometry

Language: C

args: WKT - Return a specified ST_Geometry value from Well-Known Text representation (WKT). This is an alias name for ST_GeomFromText

LWGEOM_from_text

Function: st_worldtorastercoord(rast public.raster, longitude double precision, latitude double precision)

Returns: record

Language: SQL

args: rast, longitude, latitude - Returns the upper left corner as column and row given geometric X and Y (longitude and latitude) or a point geometry expressed in the spatial reference coordinate system of the raster.

 SELECT columnx, rowy FROM _st_worldtorastercoord($1, $2, $3) 

Function: st_worldtorastercoord(rast public.raster, pt public.geometry)

Returns: record

Language: PLPGSQL

args: rast, pt - Returns the upper left corner as column and row given geometric X and Y (longitude and latitude) or a point geometry expressed in the spatial reference coordinate system of the raster.

	DECLARE
		rx integer;
		ry integer;
	BEGIN
		IF st_geometrytype(pt) != 'ST_Point' THEN
			RAISE EXCEPTION 'Attempting to compute raster coordinate with a non-point geometry';
		END IF;
		IF ST_SRID(rast) != ST_SRID(pt) THEN
			RAISE EXCEPTION 'Raster and geometry do not have the same SRID';
		END IF;

		SELECT rc.columnx AS x, rc.rowy AS y INTO columnx, rowy FROM _st_worldtorastercoord($1, st_x(pt), st_y(pt)) AS rc;
		RETURN;
	END;
	

Function: st_worldtorastercoordx(rast public.raster, pt public.geometry)

Returns: integer

Language: PLPGSQL

args: rast, pt - Returns the column in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster.

	DECLARE
		xr integer;
	BEGIN
		IF ( st_geometrytype(pt) != 'ST_Point' ) THEN
			RAISE EXCEPTION 'Attempting to compute raster coordinate with a non-point geometry';
		END IF;
		IF ST_SRID(rast) != ST_SRID(pt) THEN
			RAISE EXCEPTION 'Raster and geometry do not have the same SRID';
		END IF;
		SELECT columnx INTO xr FROM _st_worldtorastercoord($1, st_x(pt), st_y(pt));
		RETURN xr;
	END;
	

Function: st_worldtorastercoordx(rast public.raster, xw double precision)

Returns: integer

Language: SQL

args: rast, xw - Returns the column in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster.

 SELECT columnx FROM _st_worldtorastercoord($1, $2, NULL) 

Function: st_worldtorastercoordx(rast public.raster, xw double precision, yw double precision)

Returns: integer

Language: SQL

args: rast, xw, yw - Returns the column in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster.

 SELECT columnx FROM _st_worldtorastercoord($1, $2, $3) 

Function: st_worldtorastercoordy(rast public.raster, pt public.geometry)

Returns: integer

Language: PLPGSQL

args: rast, pt - Returns the row in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster.

	DECLARE
		yr integer;
	BEGIN
		IF ( st_geometrytype(pt) != 'ST_Point' ) THEN
			RAISE EXCEPTION 'Attempting to compute raster coordinate with a non-point geometry';
		END IF;
		IF ST_SRID(rast) != ST_SRID(pt) THEN
			RAISE EXCEPTION 'Raster and geometry do not have the same SRID';
		END IF;
		SELECT rowy INTO yr FROM _st_worldtorastercoord($1, st_x(pt), st_y(pt));
		RETURN yr;
	END;
	

Function: st_worldtorastercoordy(rast public.raster, xw double precision, yw double precision)

Returns: integer

Language: SQL

args: rast, xw, yw - Returns the row in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster.

 SELECT rowy FROM _st_worldtorastercoord($1, $2, $3) 

Function: st_worldtorastercoordy(rast public.raster, yw double precision)

Returns: integer

Language: SQL

args: rast, xw - Returns the row in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster.

 SELECT rowy FROM _st_worldtorastercoord($1, NULL, $2) 

Function: st_x(public.geometry)

Returns: double precision

Language: C

args: a_point - Return the X coordinate of the point, or NULL if not available. Input must be a point.

LWGEOM_x_point

Function: st_xmax(public.box3d)

Returns: double precision

Language: C

args: aGeomorBox2DorBox3D - Returns X maxima of a bounding box 2d or 3d or a geometry.

BOX3D_xmax

Function: st_xmin(public.box3d)

Returns: double precision

Language: C

args: aGeomorBox2DorBox3D - Returns X minima of a bounding box 2d or 3d or a geometry.

BOX3D_xmin

Function: st_y(public.geometry)

Returns: double precision

Language: C

args: a_point - Return the Y coordinate of the point, or NULL if not available. Input must be a point.

LWGEOM_y_point

Function: st_ymax(public.box3d)

Returns: double precision

Language: C

args: aGeomorBox2DorBox3D - Returns Y maxima of a bounding box 2d or 3d or a geometry.

BOX3D_ymax

Function: st_ymin(public.box3d)

Returns: double precision

Language: C

args: aGeomorBox2DorBox3D - Returns Y minima of a bounding box 2d or 3d or a geometry.

BOX3D_ymin

Function: st_z(public.geometry)

Returns: double precision

Language: C

args: a_point - Return the Z coordinate of the point, or NULL if not available. Input must be a point.

LWGEOM_z_point

Function: st_zmax(public.box3d)

Returns: double precision

Language: C

args: aGeomorBox2DorBox3D - Returns Z minima of a bounding box 2d or 3d or a geometry.

BOX3D_zmax

Function: st_zmflag(public.geometry)

Returns: smallint

Language: C

args: geomA - Returns ZM (dimension semantic) flag of the geometries as a small int. Values are: 0=2d, 1=3dm, 2=3dz, 3=4d.

LWGEOM_zmflag

Function: st_zmin(public.box3d)

Returns: double precision

Language: C

args: aGeomorBox2DorBox3D - Returns Z minima of a bounding box 2d or 3d or a geometry.

BOX3D_zmin

Function: strip_tags(text)

Returns: text

Language: SQL

    SELECT regexp_replace(regexp_replace($1, E'(?x)<[^>]*?(\s alt \s* =
\s* ([\'"]) ([^>]*?) \2) [^>]*? >', E'\3'), E'(?x)(< [^>]*? >)', '',
'g')

Function: subltree(public.ltree, integer, integer)

Returns: ltree

Language: C

subltree

Function: subpath(public.ltree, integer)

Returns: ltree

Language: C

subpath

Function: subpath(public.ltree, integer, integer)

Returns: ltree

Language: C

subpath

Function: text(public.geometry)

Returns: text

Language: C

LWGEOM_to_text

Function: text2ltree(text)

Returns: ltree

Language: C

text2ltree

Function: text_soundex(text)

Returns: text

Language: C

soundex

Function: unaccent(text)

Returns: text

Language: PLPGSQL

BEGIN
RETURN translate($1, E'\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb2\xc3\xb3\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xb1\xc3\xa7\xe2\x80\x99',E'aaaaaaeeeeiiiioooooouuuunc\'');
end;

Function: unlockrows(text)

Returns: integer

Language: PLPGSQL

args: auth_token - Remove all locks held by specified authorization id. Returns the number of locks released.

 
DECLARE
	ret int;
BEGIN

	IF NOT LongTransactionsEnabled() THEN
		RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.';
	END IF;

	EXECUTE 'DELETE FROM authorization_table where authid = ' ||
		quote_literal($1);

	GET DIAGNOSTICS ret = ROW_COUNT;

	RETURN ret;
END;

Function: update_created_column()

Returns: trigger

Language: PLPGSQL

BEGIN
   NEW.created = now(); 
   RETURN NEW;
END;

Function: update_modified_column()

Returns: trigger

Language: PLPGSQL

BEGIN
   NEW.modified = now(); 
   RETURN NEW;
END;

Function: updategeometrysrid(catalogn_name character varying, schema_name character varying, table_name character varying, column_name character varying, new_srid_in integer)

Returns: text

Language: PLPGSQL

args: catalog_name, schema_name, table_name, column_name, srid - Updates the SRID of all features in a geometry column, geometry_columns metadata and srid. If it was enforced with constraints, the constraints will be updated with new srid constraint. If the old was enforced by type definition, the type definition will be changed.

DECLARE
	myrec RECORD;
	okay boolean;
	cname varchar;
	real_schema name;
	unknown_srid integer;
	new_srid integer := new_srid_in;

BEGIN


	-- Find, check or fix schema_name
	IF ( schema_name != '' ) THEN
		okay = false;

		FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
			okay := true;
		END LOOP;

		IF ( okay <> true ) THEN
			RAISE EXCEPTION 'Invalid schema name';
		ELSE
			real_schema = schema_name;
		END IF;
	ELSE
		SELECT INTO real_schema current_schema()::text;
	END IF;

	-- Ensure that column_name is in geometry_columns
	okay = false;
	FOR myrec IN SELECT type, coord_dimension FROM geometry_columns WHERE f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
		okay := true;
	END LOOP;
	IF (NOT okay) THEN
		RAISE EXCEPTION 'column not found in geometry_columns table';
		RETURN false;
	END IF;

	-- Ensure that new_srid is valid
	IF ( new_srid > 0 ) THEN
		IF ( SELECT count(*) = 0 from spatial_ref_sys where srid = new_srid ) THEN
			RAISE EXCEPTION 'invalid SRID: % not found in spatial_ref_sys', new_srid;
			RETURN false;
		END IF;
	ELSE
		unknown_srid := ST_SRID('POINT EMPTY'::geometry);
		IF ( new_srid != unknown_srid ) THEN
			new_srid := unknown_srid;
			RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid;
		END IF;
	END IF;

	IF postgis_constraint_srid(real_schema, table_name, column_name) IS NOT NULL THEN 
	-- srid was enforced with constraints before, keep it that way.
        -- Make up constraint name
        cname = 'enforce_srid_'  || column_name;
    
        -- Drop enforce_srid constraint
        EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
            '.' || quote_ident(table_name) ||
            ' DROP constraint ' || quote_ident(cname);
    
        -- Update geometries SRID
        EXECUTE 'UPDATE ' || quote_ident(real_schema) ||
            '.' || quote_ident(table_name) ||
            ' SET ' || quote_ident(column_name) ||
            ' = ST_SetSRID(' || quote_ident(column_name) ||
            ', ' || new_srid::text || ')';
            
        -- Reset enforce_srid constraint
        EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
            '.' || quote_ident(table_name) ||
            ' ADD constraint ' || quote_ident(cname) ||
            ' CHECK (st_srid(' || quote_ident(column_name) ||
            ') = ' || new_srid::text || ')';
    ELSE 
        -- We will use typmod to enforce if no srid constraints
        -- We are using postgis_type_name to lookup the new name 
        -- (in case Paul changes his mind and flips geometry_columns to return old upper case name) 
        EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' || quote_ident(table_name) || 
        ' ALTER COLUMN ' || quote_ident(column_name) || ' TYPE  geometry(' || postgis_type_name(myrec.type, myrec.coord_dimension, true) || ', ' || new_srid::text || ') USING ST_SetSRID(' || quote_ident(column_name) || ',' || new_srid::text || ');' ;
    END IF;

	RETURN real_schema || '.' || table_name || '.' || column_name ||' SRID changed to ' || new_srid::text;

END;

Function: updategeometrysrid(character varying, character varying, character varying, integer)

Returns: text

Language: PLPGSQL

args: schema_name, table_name, column_name, srid - Updates the SRID of all features in a geometry column, geometry_columns metadata and srid. If it was enforced with constraints, the constraints will be updated with new srid constraint. If the old was enforced by type definition, the type definition will be changed.

DECLARE
	ret  text;
BEGIN
	SELECT UpdateGeometrySRID('',$1,$2,$3,$4) into ret;
	RETURN ret;
END;

Function: updategeometrysrid(character varying, character varying, integer)

Returns: text

Language: PLPGSQL

args: table_name, column_name, srid - Updates the SRID of all features in a geometry column, geometry_columns metadata and srid. If it was enforced with constraints, the constraints will be updated with new srid constraint. If the old was enforced by type definition, the type definition will be changed.

DECLARE
	ret  text;
BEGIN
	SELECT UpdateGeometrySRID('','',$1,$2,$3) into ret;
	RETURN ret;
END;

Function: updaterastersrid(schema_name name, table_name name, column_name name, new_srid integer)

Returns: boolean

Language: SQL

args: schema_name, table_name, column_name, new_srid - Change the SRID of all rasters in the user-specified column and table.

 SELECT _UpdateRasterSRID($1, $2, $3, $4) 

Function: updaterastersrid(table_name name, column_name name, new_srid integer)

Returns: boolean

Language: SQL

args: table_name, column_name, new_srid - Change the SRID of all rasters in the user-specified column and table.

 SELECT _UpdateRasterSRID('', $1, $2, $3) 

Generated by PostgreSQL Autodoc

W3C HTML 4.01 Strict